------------------------------------------------------------
author: hjjdebug
date ?: 2023年 12月 29日 星期五 12:39:37 CST
description: cmake 脚本解释器
------------------------------------------------------------
# cmake 可看成是一种脚本解释器
# 执行测试可以用cmake -P CMakeLists.txt
# -P 指明是脚本模式而非编译模式,后面文件是cmake 的脚本文件,-P 有process 处理的意思
# 用cmake --help-command-list 可以看到所有支持的命令,100多个,有的命令属于编译模式命令
# 用cmake --help-command <command> 可看到具体命令的使用,命令不区分大小写
# 编译模式或称build模式支持所有脚本模式命令. 所以脚本模式是基本模式.
# 看下面的文件
$ cat CMakeLists.txt
#变量及变量的使用, 变量是字符串或字符串数组
message("hello cmake!")
set(NAME "hjj")
message("hello ${NAME}")
#变量运算
set(a "1")
set(b "2")
math(EXPR res "${a}+${b}") # EXPR(要大写) 是一款表达式计算工具, math 是数学运算
message("a+b is ${res}")
# 循环语句
foreach(i RANGE 1 5)
? ? message("i is ${i}")
endforeach()
while(${a} LESS "5")
message("a is ${a}")
math(EXPR a "${a}+1")
endwhile()
# if语句中匹配运算
set(ARCH "AX87")
if( ARCH MATCHES "X86")
message("arch is x86")
else()
message("arch is not x86")
endif()
# 定义宏
macro(printf str)
message(${str}) ? ? ? ? ? ? ? # 不能用小括号,要用大括号引用变量
endmacro()
#定义函数
function(printf2 str)
message(${str})
endfunction()
#使用宏和使用函数
printf("abc") # 宏是展开,函数是调用
printf2("123")
运行结果:
$ cmake -P CMakeLists.txt?
hello cmake!
hello hjj
a+b is 3
i is 1
i is 2
i is 3
i is 4
i is 5
a is 1
a is 2
a is 3
a is 4
arch is not x86
abc
123
虽然你不会用cmake 去编程序,但这些基础知识还是需要知道的.
这样再看见那些.cmake 后缀文件,CMakelists.txt 文件等就不会太陌生了.