如何使用cmake向单个翻译单元添加编译器标志(我想将其附加,而不是覆盖其他标记)?
我试过
set_source_files_properties(MyFile.cpp PROPERTIES CMAKE_CXX_FLAGS "-msse4.1")
但它不起作用..有关如何做的任何建议吗?
答案 0 :(得分:17)
对于CMake 3.0或更高版本,使用COMPILE_OPTIONS属性向单个翻译单元添加标记,即:
set_property(SOURCE MyFile.cpp APPEND PROPERTY COMPILE_FLAGS "-msse4.1")
对于早期版本的CMake,请使用COMPILE_FLAGS属性。 COMPILE_FLAGS
是一个字符串属性。因此,向其附加附加选项的正确方法是使用set_property命令的APPEND_STRING
变体:
set_property(SOURCE MyFile.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -msse4.1 ")
答案 1 :(得分:3)
你几乎就在那里,这应该有效:
set_property(SOURCE MyFile.cpp APPEND PROPERTY CMAKE_CXX_FLAGS -msse4.1)
特定类型的助手(如set_source_files_properties()
)有时会很方便,但它们有一个非常简单的界面。对于非平凡的事情,您必须使用set_property()
。我发现我实际上很少使用助手。
答案 2 :(得分:2)
试试这个:
set_property(SOURCE MyFile.cpp APPEND PROPERTY CMAKE_CXX_FLAGS "-msse4.1")
顺便说一下,一些属性总是附加,例如,COMPILE_FLAGS。对于那些你不需要做任何特殊事情的人,只需设置它们并附加它们:)