CMake简介
CMake是一种代码构建工具,通过此工具可以设置编译哪些代码?编译成什么(so、lib、a还是可执行文件)?需要哪些依赖?以及编译完成后的目标目录等。本文对AS默认形成的CMakeList中的一些语法做简单讲解。
cmake_minimum_required(VERSION 3.4.1)
可以不指定最小版本,但是如果用到了高版本的一些特性而本身安装的版本较低时就会有问题,所以建议添加一下。
add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)
通过此命令可以生成一个库文件,其中name为要生成的库文件的名字,后续参数表示指定为静态.a库还是动态的.so库,后续则是源码。如果是几个简单的源文件则可以直接指定,参照默认的CMakeList形式。也可以通过添加add_library命令生成多个库文件
导入一个库文件仍需要add_library命令,通过不同的参数来表达要引入一个库,但是需要set_target_properties命令来表达导入库的参数,比如库存放的目录
add_library(test SHARED IMPORTED)
set_target_properties( test #指定目标库名称
PROPERTIES IMPORTED_LOCATION #指明要设置的参数
/XX/XXX/libtest.so #设定导入库的路径)
使用find_library来查找系统相关的库或第三方库,比如log相关的:
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
导入库文件后还要根据需要链接库文件,则需要target_link_libraries( lib1 lib2 lib3)方法:
target_link_libraries( # Specifies the target library.
native-lib
# Links the target library to the log library
# included in the NDK.
${log-lib} )
以上是基于AS生成的基本CMakeList中的基本语法讲解,对于大部分的简单开发已经够用了。最多参考几篇文章处理一下,如果较为复杂的工程也不是三言两语能说清楚的,还需要去探索。附几篇更详细的命令解释与入门文章: