Как правильно установить флаги CMake в CMakeLists.txt - PullRequest
0 голосов
/ 29 сентября 2019

У меня проблемы с настройкой параметров и переменных CMake и передачей их в графический интерфейс CMake.

Например, в моем файле CMakeLists.txt есть следующие строки:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -tR -DPOCO_DLL")
message("CMake flags: " ${CMAKE_CXX_FLAGS}) 

При запуске configure в графическом интерфейсе CMake он печатает "CMake flags: -tM -tR -DPOCO_DLL" , указывающий, что настройка CMAKE_CXX_FLAGS "работает".

Однако графический интерфейс не получаетсяобновляется и показывает только "- tM" в строке CMAKE_CXX_FLAGS.

Как правильно настроить эти параметры CMAKE в файле CMakeLists, чтобы они передавались в графический интерфейс CMake?

1 Ответ

1 голос
/ 30 сентября 2019

Хитрость в том, чтобы установить CMAKE_CXX_FLAGS перед project(...) оператором.Но этого будет недостаточно;Вам также нужно будет положить его в кеш.

Кроме того, если вы планируете поддерживать его первоначальную настройку из интерфейса командной строки и / или параметр -C cmake (locad initial cache), вам нужно будет принудительно поместить его в кеш, как показано ниже:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -tR -DPOCO_DLL" CACHE STRING "Default CXX options" FORCE)
...
...
project(MyProject)
....

С другой стороны, будьте очень осторожны, поскольку вы устанавливаете параметры командной строки в тот момент, когда ничего не знаете о компиляторе, который по умолчанию определяется во время выполнения оператора project.

Неявно, это делает ваш CMakeLists.txt зависимым от компилятора.

В конце приведена документация о команде set cmake

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