CMake集函数

CMake集函数,cmake,set,Cmake,Set,我正在努力学习CMake。我不太清楚这个set函数是如何工作的 set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions) 根据CMake文件: set([[CACHE[FORCE]]| PARENT_SCOPE]) 如果在此特定情况下,变量为EXTRA_LIBS,值为${EXTRA_LIBS},则缓存为数学函数 正确吗?该命令试图将字符串MathFunctions附加到变量EXTRA_LIBS中已存储的任何值 要分解它: set(VARNAME VALUE)

我正在努力学习CMake。我不太清楚这个
set
函数是如何工作的

set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
根据CMake文件:

set([[CACHE[FORCE]]| PARENT_SCOPE])
如果在此特定情况下,变量为
EXTRA_LIBS
,值为
${EXTRA_LIBS}
,则
缓存
数学函数


正确吗?

该命令试图将字符串
MathFunctions
附加到变量
EXTRA_LIBS
中已存储的任何值

要分解它:

set(VARNAME VALUE)
将变量
VARNAME
设置为字符串
VALUE
。请注意,您可以将多个值分配给单个变量,这将有效地分配给该变量:

set(VARNAME VALUE1 VALUE2 VALUE3)
要稍后访问该变量的值,您必须

如果指定的值是一个列表,您可能希望改为:

问题中的命令在一行中执行旧值的解引用和新值的赋值

执行相同任务的更具描述性的方法是:


另一个相关的注意事项是:请注意,添加到列表和字符串连接之间存在细微的区别:

set (EXTRA_LIBS "${EXTRA_LIBS} MathFunctions")

此命令将为变量指定一个新的单数字符串值,而不是追加,这等于将前面的值与字符串
MathFunctions

串联起来,命令试图做的是将字符串
MathFunctions
附加到变量
EXTRA\u LIBS
中已存储的任何值

要分解它:

set(VARNAME VALUE)
将变量
VARNAME
设置为字符串
VALUE
。请注意,您可以将多个值分配给单个变量,这将有效地分配给该变量:

set(VARNAME VALUE1 VALUE2 VALUE3)
要稍后访问该变量的值,您必须

如果指定的值是一个列表,您可能希望改为:

问题中的命令在一行中执行旧值的解引用和新值的赋值

执行相同任务的更具描述性的方法是:


另一个相关的注意事项是:请注意,添加到列表和字符串连接之间存在细微的区别:

set (EXTRA_LIBS "${EXTRA_LIBS} MathFunctions")

此命令不会追加,而是为变量指定一个新的单数字符串值,该值等于先前值与字符串
MathFunctions

的串联。不幸的是,您使用的教程已经过时。您可能想改用,甚至直接使用。您提到的那些关键字选项(缓存等)实际上会出现在调用中,并且是可选的。例如,
SET(MY\u VAR“Content”PARENT\u范围)
。在您的例子中,没有使用任何变量,它只是一个直接变量集。不幸的是,您使用的教程已经过时了。您可能想改用,甚至直接使用。您提到的那些关键字选项(缓存等)实际上会出现在调用中,并且是可选的。例如,
SET(MY\u VAR“Content”PARENT\u范围)
。在您的例子中,不使用任何变量,它只是一个直接变量集。
set (EXTRA_LIBS "${EXTRA_LIBS} MathFunctions")