一、CMake变量的两种访问方式
1.直接使用变量名(不展开)
- 当CMake需要知道变量是否存在时
- 当CMake需要变量标识符本身时
- 在某些特定的命令和上下文中
2.使用${VAR}(展开值)
-
当需要变量的实际内容时
-
在字符串拼接时
-
在需要值的地方使用
二、foreach(IN LISTS) 的特殊语法
为什么不能写成 ${MY_LIST}:
一个对比:
三、if() 判断中的变量使用
CMake 中 if() 的语法规则:
为什么不能写成 if(${MY_VAR}):
布尔值转换规则:
四、上下文决定语法
我们定义了一个变量MY_VAR,在使用它时是直接MY_VAR,还是需要用 ¥{my_var} 来获取它的值,需要看实际的上下文情况。
如果是if判断,while循环等情况,都需要直接使用MY_VAR。
如果是message直接打印,或者是参数传递了形参,需要转换为实际的实参,则需要用${MY_VAR}。
七、记忆口诀
核心原则:当语法需要变量标识符时用名字,需要变量值时用 ${}