Я пишу CMakeLists.txt
для моего проекта, и мне нужно добавить (при определенных условиях, которые здесь не имеют значения) флаг компилятора к $CMAKE_CXX_FLAGS
(и не важно, что это C ++, это мог C, или Fortran или что-нет).Теперь я могу сделать это следующим образом:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_FLAG_HERE}")
или, чтобы быть более современным:
string(APPEND CMAKE_CXX_FLAGS " ${EXTRA_FLAG_HERE}")
, но если флаг уже есть, я не хочу добавлятьэто дважды.Теперь я могу сделать
if(NOT string(FIND CMAKE_CXX_FLAGS "${EXTRA_FLAG_HERE}")
string(APPEND CMAKE_CXX_FLAGS " ${EXTRA_FLAG_HERE}")
endif()
Edit: , но, как указывает @Fred, на самом деле это не позволит избежать дубликатов, если этот флаг будет введен CMake иначе, чем через $CMAKE_CXX_FLAGS
.
Я надеялся, что есть что-то «встроенное», которое добавляет флаг, гарантируя отсутствие дублирования (в том числе более устойчивое к вхождениям ${EXTRA_FLAG}
, что в аргументе другого флага, например, в флаге -D
).
Итак, что мне делать?