CMake介绍
在Android studio2.2版本以上使用的构建原生库的默认工具。
是一个跨平台的构建工具,可以用简单的语言来描述所有平台的安装(编译过程)。能够输出各种各样的makefile或者project文件。并不直接构建出最终的软件,而是产生其他工具的脚本(如makefile),然后依据这个工具的构建方式使用。
CMke是一个比make更高级的编译配置工具,它可以根据不同的平台,不同的编译器,生成对应的makefile或者vproject项目,从而达到跨平台的目的。Android Studio利用CMake生成的是ninja。ninja是一个小型的关注速度的编译系统。我们不需要关系ninja的脚本,知道怎么配置CMake就可以了。
CMake其实是一个跨平台的支持产出各种不同的构建脚本的一个工具。
CMake源文件可以包含命令,注释,空格和换行。
编写的源文件通常以CMakeLists.txt命名或以.cmake为扩展名。
可通过add_subdirectory()命令把子目录的CMake源文件添加进来。
源文件中所有有效的语句都是命令,可以是内置命令或者自定义的函数(宏)命令
语法
声明变量使用set(变量名 变量值) 如set(var 123)
引用变量message来打印 message("var = {list}")
true 的常量值 :1,ON ,YES,TRUE ,Y 非0的值
false的常量值 :0,OFF,NO,FALSE,N,IGNORE,NOTFOUND,空字符串,以-NOTFOUND结尾的字符串
一元操作符,例如:EXISTS、COMMAND、DEFINED 等
二元操作符,例如:EQUAL、LESS、GREATER、STRLESS、STRGREATER 等
操作符优先级:一元操作符 > 二元操作符 > NOT > AND、OR
示例:
set(list 1 2 2 2 33 3 4 5)
message("list = ${list}")
while(NOT var STREQUAL "aaa")
set(var "${a}x")
endwhile()
foreach(item 1 2 3)
message("item =${item}")
endforeach()
函数自定义和调用
function(func x y z)
message("x=${x},y =${y},z =${z}")
endfunction(func)
func(1 2 3)
宏命令定义和调用
macro(mac x y z)
message("x=${x},y =${y},z =${z}")
message("my name is macro...")
endmacro(mac)
macro(1 2 3)
变量的作用域
全局层
cache变量
目录层
在当前目录CMakeLists.txt中定义
函数层
函数中定义
网友评论