Cmake配置

作者: 大旺旺的弟弟小旺旺 | 来源:发表于2021-10-22 19:12 被阅读0次

它是一个纯文本文件,并包含构建c/c++使用的命令,配置命令指示创建原生库使用那些源代码,在配置新的 CMake 构建脚本后,您需要配置gradle 将 CMake 项目作为构建依赖项包含在内,从而让 Gradle 构建原生库,并将其与应用的 APK 打包在一起。

创建构建脚本

cmakeList可以创建在任意位置。

  • 设置使用的版本
cmake_minimum_required(VERSION 3.4.1)

根据源码生成库

add_library( # Specifies the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             src/main/cpp/native-lib.cpp )

在使用 add_library() 向 CMake 构建脚本添加源代码文件或库时,Android Studio 还会在您同步项目后在 Project 视图中显示相关的头文件。不过,为了让 CMake 能够在编译时找到头文件,您需要向 CMake 构建脚本添加命令,并指定头文件的路径:

add_library(...)
# Specifies a path to native header files.
include_directories(src/main/cpp/include/)

生成的库的名字前面加的“lib”,不过在加载的时候,可以直接的忽略掉。

static {
    System.loadLibrary("native-lib");
}

上面都是加入我们自己写的代码,如果想使用NDK提供的库,可以使用find_library,它会去ndk的安装目录下自己查找。这些无需打包apk,甚至本地无需安装,只需要指定路径。

find_library(
    log-lib
    log
)

为了可以调用函数,需要加一个关联

target_link_libraries(
  native-lib    (我们自己的)
  ${log-lib}
)

使用源代码的方式

add_library( app-glue
             STATIC
             ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c )

# You need to link static libraries against your shared native library.
target_link_libraries( native-lib app-glue ${log-lib} )

添加其他库

添加的步骤类似:

add_library( imported-lib
             SHARED
             IMPORTED )

然后指定路径

set_target_properties( # Specifies the target library.
                       imported-lib

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       imported-lib/src/${ANDROID_ABI}/libimported-lib.so )

为了让 CMake 能够在编译时找到头文件,您需要使用 include_directories() 命令并包含相应头文件的路径:

include_directories( imported-lib/include/ )

如需将预构建库关联到您自己的原生库,请将其添加到 CMake 构建脚本的 target_link_libraries() 命令中

target_link_libraries( native-lib imported-lib app-glue ${log-lib} )

构建多个CmakeList.txt

如果想要构建多个 CMake 项目并在 Android 项目中包含这些 CMake 项目的输出,您可以使用一个 CMakeLists.txt 文件(即您关联到 Gradle 的那个文件)作为顶级 CMake 构建脚本,并添加其他 CMake 项目作为此构建脚本的依赖项。以下顶级 CMake 构建脚本会使用 add_subdirectory() 命令将另一个 CMakeLists.txt 文件指定为构建依赖项,然后关联其输出,就像处理任何其他预构建库一样。

add_subdirectory( # Specifies the directory of the CMakeLists.txt file.
                  ${lib_src_DIR}

                  # Specifies the directory for the build outputs.
                  ${lib_build_DIR} )

相关文章

  • cmake Ubuntu 环境下安装

    安装 在cmake官网下载cmake:https://cmake.org/download/ 解压 配置环境变量 ...

  • 使用clang编写XCode代码检测插件

    一、项目配置 下载llvm源码 安装CMake2.1 配置CMAKE2.2 Loadable modules和Cl...

  • 配置Windows开发机环境

    配置CLion 下载 配置CMake 配置编译器MinGW

  • CMake 构建项目教程

    Cmake介绍 CMake意为cross-platform make,可用于管理c/c++工程。CMake解析配置...

  • cmake常用配置

    cmake常用配置(oepncv, boost)

  • Android Studio Cmake配置

    CMake配置 ​ 在android studio 2.2及以上,构建原生库的默认工具是 CMake。 ​ ...

  • cmake配置

    首先我们将ffmpeg所有头文件都导入项目。 头文件全位于include中。那具体的实现类呢,在LIBS中: 那么...

  • CMake配置

    CMake ​ 在android studio 2.2及以上,构建原生库的默认工具是 CMake。 ​ CMake...

  • Cmake配置

    它是一个纯文本文件,并包含构建c/c++使用的命令,配置命令指示创建原生库使用那些源代码,在配置新的 CMake ...

  • cmake用法

    示例源码在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下: 编写 CMake 配置...

网友评论

    本文标题:Cmake配置

    本文链接:https://www.haomeiwen.com/subject/onxfaltx.html