使用CMake将编译器标志附加到文件

时间:2013-11-27 14:15:32

标签: c++ cmake

如何使用cmake向单个翻译单元添加编译器标志(我想将其附加,而不是覆盖其他标记)?

我试过

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

但它不起作用..有关如何做的任何建议吗?

3 个答案:

答案 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。对于那些你不需要做任何特殊事情的人,只需设置它们并附加它们:)