CMakeLists.txt入门教程:构建Android NDK项目

需积分: 10 5 下载量 20 浏览量 更新于2024-08-05 收藏 3KB TXT 举报
CMakeLists.txt是CMake构建系统中的核心文件,它定义了一个项目的构建规则和配置。本文档将对CMakeLists.txt文件在Android NDK项目中的应用进行简要介绍,以便理解和管理复杂的跨平台开发流程。 首先,CMakeLists.txt的`cmake_minimum_required`指令用于指定CMake的最小支持版本,这里是3.10.2,确保使用的CMake版本足够处理该配置。这一步确保了项目可以在支持的CMake版本上编译。 接下来,`project`函数定义了项目名称,这里是"testndk",这是编译器识别的主要项目标识。 `set`函数被用来设置项目的根目录(ROOT_DIR)和相关的库文件夹(LIBS_DIR和CGLM_DIR)。这些路径变量对于查找和链接必要的头文件和源代码至关重要。 `include_directories`用于指定需要包含的头文件目录,这里指定了LIBS_DIR和CGLM_DIR,使得编译器可以找到cglm库所需的头文件。 `file(GLOB)`命令用于动态地收集目录中的文件,如cglm库的源代码文件(`.c`扩展名),并通过`add_library`命令创建一个名为"ndk-lib"的共享库(SHARED表示动态链接库),包含了所有这些源文件以及特定的自定义模块。 `add_library(native-lib SHARED IMPORTED)`部分创建了一个名为"native-lib"的共享库,但它是通过`IMPORTED`属性引入的,这意味着库的位置(在`set_target_properties`中指定的${ROOT_DIR}/app/libs/${ANDROID_ABI}/libnative-lib.so)在编译时会被自动处理,而不是作为本地库生成。 同样,`libavutil-lib`库也是通过`add_library`创建的,但是作为`IMPORTED`类型,它的实际二进制文件位置被设置为`libavutil.so`,这可能是一个预编译的依赖库。 整个CMakeLists.txt文件展示了如何使用CMake来管理多个库的构建,包括设置路径、查找和链接源文件,以及处理不同平台的依赖。这对于Android NDK项目尤为重要,因为它们通常需要在不同的架构(如armeabi-v7a、arm64-v8a等)下构建和部署。理解并熟练使用CMakeLists.txt有助于简化构建过程,提高开发效率和跨平台兼容性。