如何在CMake中批量将多个变量设置为TRUE?
CMake批量设置多个变量的可行方法
你之前的写法无效是因为CMake的set命令语法规则:set(<variable> <value>... [PARENT_SCOPE]),换行后VAR1后面的所有内容都会被当作它的取值,所以才会出现VAR1的值变成"TRUEVAR2TRUE"的情况。
下面是几种更高效的批量设置方式:
1. 变量值相同时的批量设置
如果多个变量需要设置为同一个值,用foreach循环遍历变量列表即可:
foreach(var IN ITEMS VAR1 VAR2 VAR3) set(${var} TRUE) endforeach()
2. 变量值不同时的批量设置
如果每个变量对应不同的值,可以将变量和值按顺序组成列表,再通过循环依次赋值:
# 按"变量1 值1 变量2 值2"的顺序定义列表 set(var_value_pairs VAR1 TRUE VAR2 FALSE VAR3 "Hello CMake" ) foreach(var value IN LISTS var_value_pairs) set(${var} ${value}) endforeach()
3. 使用自定义宏封装
如果需要频繁批量设置变量,可以封装成宏,复用性更强:
macro(set_multiple) foreach(var value IN LISTS ARGV) set(${var} ${value}) endforeach() endmacro() # 使用宏批量设置 set_multiple( VAR1 TRUE VAR2 FALSE VAR3 123 )
这些方法都比重复写多个set语句更简洁,也更容易维护。
内容的提问来源于stack exchange,提问作者Bei
相关产品推荐
相关产品推荐

