在 CMake 中,${} 是用于引用变量值的语法。当你在 CMake 脚本中使用 ${} 包围一个变量名时,CMake 会解析这个变量,并将它替换为对应的值。具体来说,${} 语法的作用是将变量名转换为它的实际值,以便在 CMake 脚本中使用。
基本用法
-
定义变量:
cmake复制代码
set(VAR_NAME "Hello, World!")这里
VAR_NAME被定义为一个字符串变量,值为"Hello, World!"。 -
引用变量:
cmake复制代码
message(${VAR_NAME})这行代码中,
message(${VAR_NAME})将打印Hello, World!,因为${VAR_NAME}被替换为了变量VAR_NAME的值。
细节解释
${}的作用:- 当 CMake 遇到
${VAR_NAME}时,它会查找名为VAR_NAME的变量,并用该变量的值替换整个${VAR_NAME}表达式。 - 如果
VAR_NAME是一个字符串变量,则${VAR_NAME}会直接替换为这个字符串。 - 如果
VAR_NAME是一个列表变量,则${VAR_NAME}会被替换为该列表的所有元素,通常以分号分隔。
- 当 CMake 遇到
示例:在字符串中使用 ${}
cmake
复制代码
set(PREFIX "Hello") set(SUFFIX "World") set(MESSAGE "${PREFIX}, ${SUFFIX}!") message(${MESSAGE}) # 输出: Hello, World!
在这个例子中:
${PREFIX}被替换为Hello。${SUFFIX}被替换为World。${MESSAGE}被替换为Hello, World!。
高级用法:嵌套引用
有时你可能会遇到嵌套的 ${},这是 CMake 处理复杂变量引用的方式。例如:
cmake
复制代码
set(VAR_NAME "VAR_CONTENT") set(VAR_CONTENT "Hello, Nested World!") message(${${VAR_NAME}}) # 输出: Hello, Nested World!
在这个例子中:
${VAR_NAME}被替换为VAR_CONTENT,所以实际上message(${${VAR_NAME}})相当于message(${VAR_CONTENT})。- 然后
${VAR_CONTENT}被替换为Hello, Nested World!,最终输出这个字符串。
总结
${}是 CMake 用于引用变量值的基本语法。- 它用于将变量名替换为变量的实际值。
- 在 CMake 中使用
${}时,CMake 会查找变量名并替换为相应的值。如果你需要处理变量的值,通常就要使用${}语法。
