首页 > 解决方案 > 如何判断变量来自哪里?

问题描述

我有一个目录CMakeLists.txt。它调用module1.cmake位于其他地方的 CMake 模块文件。

module1.cmake将引用一个名为 的变量XXX,该变量可能来自:

  1. 环境变量%XXX%
  2. 命令行通过cmake -D XXX=
  3. XXX在调用目录的CMakeLists.txtthrough中定义set()
  4. 以及之前配置的构建文件夹中的 CACHE 条目

然后module1.cmake将变量存储XXX到CACHE中。

module1.cmake文件中,我需要告诉XXX来自哪里,因为我需要区别对待它们。

对于 1,我可以检查 的值$ENV{XXX}

对于 4,我正在考虑使用get_property(cached_XXX CACHE XXX PROPERTY VALUE)并检查cached_XXX. 但事实证明,该-D XXX=选项总是更新 CACHE 条目。所以我无法判断该cached_XXX值是来自旧 CACHE 还是来自当前-D选项。

所以毕竟,我怎么能分辨2, 3 和 4

标签: cmakecmake-language

解决方案


推荐阅读