CMake: как очистить параметры целевой компиляции - PullRequest
0 голосов
/ 24 мая 2018

В моем проекте я определил некоторые общие параметры компиляции, используя CMAKE_CXX_FLAGS глобально.Некоторые другие параметры, которые в общем случае должны применяться ко всем целям, указаны с помощью add_compile_options() в моем основном файле CMakeLists.

Например, я хочу, чтобы флаг -Wconversion был применен ко всем целям.Но у меня есть одна внешняя библиотека, которая выдает много предупреждений с включенной этой опцией.Поэтому я хочу отключить опцию только для этой конкретной библиотеки:

get_target_property(EXTLIB_COMPILE_FLAGS ext_lib COMPILE_OPTIONS )
list(REMOVE_ITEM EXTLIB_COMPILE_FLAGS -Wconversion)
set_target_properties(ext_lib PROPERTIES COMPILE_OPTIONS ${EXTLIB_COMPILE_FLAGS } )

Но сейчас только -Wconversion было установлено с помощью add_compile_options().И цель не имеет собственных дополнительных флагов.Итак, после удаления единственной записи из списка я получу пустой список.Вызов set_target_properties () завершается с ошибкой:

set_target_properties вызывается с неправильным числом аргументов.

Можно ли каким-либо образом очистить некоторые целевые свойства полностью?Я использую CMake 3.11

1 Ответ

0 голосов
/ 24 мая 2018

Превращение моего комментария в ответ

Просто добавьте кавычки:

set_target_properties(ext_lib PROPERTIES COMPILE_OPTIONS "${EXTLIB_COMPILE_FLAGS}")

Теперь - если переменная EXTLIB_COMPILE_FLAGS пуста - вы в конечном итоге получитепустая строка и просто не «отсутствующий аргумент».

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