CMake介绍及其简单语法

2021-01-10  本文已影响0人  yuLiangC

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 = {var}") 声明列表set(list 1 2 2 2 33 3 4 5) message("list ={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中定义

函数层

函数中定义

上一篇 下一篇

猜你喜欢

热点阅读