Cmake: как добавить строку к переменной через командную строку?
В моем CMakeList.txt я могу сделать следующее:
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -new -flags -here")
Можно ли сделать это через командную строку? Например:
cmake.exe -DCMAKE_CXXFLAGS+= -new -flags
Ответы
Ответ 1
Я не уверен, можно ли напрямую добавлять параметры из командной строки, но вы можете использовать дополнительную переменную для их хранения и слияния в конце. Как показано ниже:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_FLAGS}")
И затем вызовите cmake следующим образом:
cmake -DMY_FLAGS="-new -flags"
Ответ 2
Если вам не нравится синтаксис командной строки, заданный @Svalorzen, вы можете написать script, который интерпретирует аргументы командной строки так, как вам нравится, и преобразует их в то, что вы можете наложить на cmake.exe командная строка. Если переносимость вызывает беспокойство, вы можете написать script на языке, таком как Perl (обычно доступный на Unix-подобных платформах и может быть установлен в Windows).
Если все это собирается купить вас, это альтернативное решение проблемы, которую вы описали, однако я бы рекомендовал просто использовать ответ от @Svalorzen.
Ответ 3
Прежде всего, держите руки CMAKE_CXX_FLAGS
от CMAKE_CXX_FLAGS
! Используйте target_compile_options
:
target_compile_options(<YOUR_TARGET> PRIVATE ${MY_FLAGS})
Чтобы расширить другие списки, используйте list
:
list(APPEND <YOUR_LIST> <ITEM_TO_ADD>)