Добавление флага компиляции с CMake, избегая дублирования - PullRequest
0 голосов
/ 26 декабря 2018

Я пишу 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).

Итак, что мне делать?

...