Как проект (...) влияет на переменные? - PullRequest
0 голосов
/ 11 марта 2019

Недавно я наткнулся на следующую замечательную функцию cmake:

https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.html

Сохраните следующий фрагмент как CMakeLists.txt, запустите mkdir build; cd build:

cmake_minimum_required(VERSION 3.12)

message(STATUS "CMID: ${CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT}")

project( test )

При выполнении этого фрагмента не выводит истинную переменную:

➜  build /usr/bin/rm -rf *; cmake ../ | grep CMID
-- CMID: 

Теперь, если вы измените этот фрагмент:

cmake_minimum_required(VERSION 3.12)

project( test )

message(STATUS "CMID: ${CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT}")

Выполнение дает результат, который я ожидаю из документации:

➜  build /usr/bin/rm -rf *; cmake ../ | grep CMID
-- CMID: 1

Поэтому мне интересно, как относительная позиция команды project( ... ) меняет эту переменную?

1 Ответ

1 голос
/ 11 марта 2019

project() вызов устанавливает много переменных CMake, и CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT является одной из таких переменных.

Так, для многих команд CMake и доступа к переменным, размещая их до или после project() call is Crucial.

В большинстве случаев project() вызов должен быть до использования других команд и переменных.


Если вы ищетеспособ изменения префикса установки по умолчанию с CMakeLists.txt см. в моем ответе: https://stackoverflow.com/a/39485990/3440745.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...