CMake Переменные среды - PullRequest
       10

CMake Переменные среды

0 голосов
/ 25 февраля 2020

При использовании CMake и чтении множества других файлов CMakeLists.txt я заметил, что set (значение ENV {variable_name}) используется довольно часто. Однако, например, здесь https://cliutils.gitlab.io/modern-cmake/chapters/basics/variables.html автор упоминает, что этих переменных следует избегать без каких-либо дополнительных объяснений. Документация CMake стоит:

Эта команда влияет только на текущий процесс CMake, не на процесс, из которого был вызван CMake, ни на системную среду в целом, ни на среду последующих процессов сборки или тестирования.

У меня такой вопрос, действительно ли плохая практика использовать переменные окружения в CMakeLists.txt? Какие подводные камни следует ожидать при таком использовании?

1 Ответ

3 голосов
/ 25 февраля 2020

Ничего плохого в использовании переменных среды в CMakeLists.txt.

Например, многие сценарии FindXXX.cmake фактически используют переменные среды.

Какие подводные камни следует ожидать при таком использовании ?

  1. После считывания path из переменной окружения, преобразовать его в cmake-style path (например, с файлом (TO_CMAKE_PATH) ) перед доступом к файлу по этому пути в командах CMake. В противном случае вы можете получить проблему на Windows, в котором разделитель пути ("\") отличается от разделителя CMake ("/").

  2. , поскольку установка Переменная окружения влияет только на конфигурацию этап, это редко требуется : лучше вместо этого использовать переменные CMake.

    Единственное важное исключение: файл набора инструментов может быть выполнено несколько раз во время конфигурации. И установка переменной среды - единственный способ сохранить значение, рассчитанное при первом вызове цепочки инструментов, для использования в последующих вызовах. (Даже переменные CACHE в этом случае не работают).

...