要使值在子目录中可用于整个CMake环境,可以使用set(VARIABLE_NAME Value CACHE INTERNAL "")
语法设置缓存变量,或者使用set_property(GLOBAL PROPERTY VARIABLE_NAME Value)
语法设置全局属性(另请参阅关于CMake中变量的这个非常好的答案)。
使用后者的优点是,您不会因为CMake缓存不是为其设计的而"污染"它,并且在不使用FORCE
参数时,您不依赖于要删除的缓存。
但是,使用变量值的语法并不那么用户友好,因为您必须使用get_property
而不是简单地使用${...}
表示法来检索值。
有没有一种更简单的语法可以代替get_property
(某种语法糖)?
让我们总结一下这些评论。
对于我的实际问题:使用get_property
没有特定的快捷方式。
有用的评论:
- 正如
CACHE INTERNAL
所暗示的FORCE
,使用缓存的变量使变量全局可访问是可以的 - 启动CMake文件时,最好显式清除/设置内部缓存变量,以避免重复运行时出现不可预测的行为