CMake缓存变量与全局属性:使用变量值的简单语法

Rol*_*zin 5 properties global-variables cmake

要使值从子目录中可用于整个CMake环境,可以使用set(VARIABLE_NAME Value CACHE INTERNAL "")语法设置缓存变量或使用语法设置全局属性set_property(GLOBAL PROPERTY VARIABLE_NAME Value)(另请参阅关于CMake中变量的非常好的答案).

使用后者的优点是,您不会为CMake缓存"污染"它未设计的内容,并且在不使用FORCE参数时您不依赖于被删除的缓存.

但是使用变量值的语法不是用户友好的,因为您必须使用get_property而不是简单地使用${...}表示法来检索值.

是否有更简单的语法来代替get_property(某种语法糖)?

Rol*_*zin 3

我们来总结一下评论。

对于我的实际问题:没有特定的快捷方式可以使用get_property

有用的评论:

  • 正如CACHE INTERNAL暗示的FORCE那样,可以使用缓存变量来使变量全局可访问。
  • 最好通过显式清理/设置内部缓存变量来启动 CMake 文件,以避免重复运行时出现不可预测的行为。