Добавление флагов компилятора в файл с CMake

Как добавить флаг компилятора (я хочу добавить его, а не переписывать остальные) в единую единицу перевода с cmake?

Я пробовал с помощью

set_source_files_properties(MyFile.cpp PROPERTIES CMAKE_CXX_FLAGS "-msse4.1")

но он не работает.. какие-либо советы о том, как это сделать?

Ответ 1

Для CMake 3.0 или более поздней версии используйте свойство COMPILE_OPTIONS, чтобы добавить флаг в одну единицу перевода, т.е.

set_property(SOURCE MyFile.cpp APPEND PROPERTY COMPILE_FLAGS "-msse4.1")

Для более ранних версий CMake используйте свойство COMPILE_FLAGS. COMPILE_FLAGS - это строковое свойство. Поэтому правильный способ добавить дополнительные опции к нему, чтобы использовать APPEND_STRING вариант set_property команды:

set_property(SOURCE MyFile.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -msse4.1 ")

Ответ 2

Вы почти там, это должно работать:

set_property(SOURCE MyFile.cpp APPEND PROPERTY CMAKE_CXX_FLAGS -msse4.1)

Помощники рода (например, set_source_files_properties()) могут быть удобны время от времени, но у них очень симулированный интерфейс. Для нетривиальных вещей вы должны использовать set_property(). Я обнаружил, что на самом деле я редко использую помощники.

Ответ 3

Попробуйте следующее:

set_property(SOURCE MyFile.cpp APPEND PROPERTY CMAKE_CXX_FLAGS "-msse4.1")

Кстати, несколько свойств всегда добавляются, например, COMPILE_FLAGS. Для тех, кому вам не нужно ничего особенного, просто установите их и добавьте их:)