Как определить, откуда берется переменная?

У меня есть каталог с CMakeLists.txt, И это вызывает модуль CMake module1.cmake файл находится в другом месте.

module1.cmake будет ссылаться на переменную с именем XXX, который может исходить от:

  1. переменная среды %XXX%,
  2. командная строка через cmake -D XXX=
  3. XXX определенные в вызывающем каталоге CMakeLists.txt через set(),
  4. и запись CACHE в ранее настроенной папке сборки

затем module1.cmake будет хранить переменную XXX в тайник

в module1.cmake файл, мне нужно сказать, где XXX это потому, что мне нужно относиться к ним по-разному.

Для 1, я могу проверить значение $ENV{XXX},

Для 4 я думал об использовании get_property(cached_XXX CACHE XXX PROPERTY VALUE) и проверьте значение cached_XXX, Но получается -D XXX= опция всегда обновляет запись CACHE. Так что я не могу сказать, если cached_XXX значение из старого кэша или из текущего -D вариант.

В конце концов, как я могу сказать, что между 2, 3 и 4?

0 ответов

Другие вопросы по тегам