接下来 在AndroidStudio 上新建一个项目,选择C++项目,等待项目初始化完成
构建完成后,我们可以看到 在main这个目录下多了cpp这个文件夹,CMakeLists.txt 便是系统为我们默认创建好的
Cmake 注释
单行注释 # 注释类容
多行注释 #[[ 多行注释
多行注释
]]
Cmake 变量的定义与使用
cmake中所有变量都是string类型的,可以使用 set() 来声明一个变量, unset() 来移除一个变量
变量的引用 使用美元符号 ${引用的变量名字}
set(var 123456789)#声明一个变量 var表示变量名字 后面变量的值
message("var=${var}")#message() 输出变量的值 ${var}表示引用这个变量
可以看到 我们在 CMakeLists.txt 中定义变量并打印变量的值,控制台 打印 出了 123456789这个值
Cmake 中的列表 (lists)
语法格式1 set(列表名 值1 值2 值3)
set (list 1 2 3)
语法格式2 set(列表名 “值1;值2;值3”)
set (list "1;2;3")
定义列表并打印列表到控制台
set(list 1 2 3 4 5 6 7 8 9)
message("list=${list}")
Cmake 流程控制-操作符
表达式中可以包含操作符,操作符包括:
一元操作符,例如:EXISTS、COMMAND、DEFINED 等
二元操作符,例如:EQUAL、LESS、GREATER、STRLESS、STRGREATER 等NOT(非操作符)AND(与操作符)、OR(或操作符)操作符优先级:一元操作符 > 二元操作符 > NOT > AND、OR
Cmake 布尔常量值
Cmake 条件命令
set(if_tap OFF) #定义 if_tap 为false
set(elseif_tap ON)#定义 elseif_tap 为true
#得到打印结果 elseif
if(${if_tap})
message("if")
elseif(${elseif_tap})
message("elseif")
endif()
Cmake 流程控制–循环命令
set(a "")#定义变量a为空
while(NOT a STREQUAL "xxx")#循环判断 a不等于 xxx 就每次加a后面加上一个x 然后输出
set(a "${a}x")
message(("a=${a}"))
endwhile()
Cmake 流程控制–循环遍历一
foreach(item 1 2 3) #循环打印出 1 2 3
message("item=${item}")
endforeach(item)
Cmake 流程控制–循环遍历二
foreach(item RANGE 10)#打印从 0 到 10 之间的整数
message("item=${item}")
endforeach(item)
Cmake 流程控制–循环遍历三
foreach(item RANGE 1 5 2) # 1-5的范围 每次增量加2 打印出来
message("item=${item}")
endforeach(item)
Cmake 流程控制–循环遍历四
set(list_var 1 2 3 4)
foreach(item IN LISTS list_var) #从列表里循环打印出来
message("item=${item}")
endforeach(item)
Cmake 流程控制–自定义函数命令
function(fun a b c) # 函数名 fun 三个参数 a b c
message("a=${a}")
message("a=${b}")
message("a=${c}")
endfunction()
fun(11 22 33) #调用函数 传入参数 打印出传入的参数
再执行打印这句话
message("ARGC=${ARGC}")#ARGC 是cmake里面的内置变量 表示的时传入参数的个数 这里是3个参数
再加入
message("ARGV=${ARGV}")#输出所有传入参数
message("ARGV0=${ARGV0}") #打印第一个参数 11
message("ARGV1=${ARGV1}") #打印第二个参数 22
message("ARGV2=${ARGV2}") #打印第三个参数 33
message("ARGV3=${ARGV3}")#没有匹配的参数了 打印空值