COMPILE_FLAGS和COMPILE_OPTIONS之间的区别

Pet*_*ter 9 cmake

有什么区别

COMPILE_FLAGS:编译此目标源时使用的其他标志.

COMPILE_OPTIONS:传递给编译器的选项列表.

就产生的VS2010解决方案而言,这些命令产生相同的结果:

target_compile_options(target PRIVATE "/option=test1")
set_target_properties(target PROPERTIES COMPILE_FLAGS "/option=test1")
set_target_properties(target PROPERTIES COMPILE_OPTIONS "/option=test1")
Run Code Online (Sandbox Code Playgroud)

ste*_*ire 16

COMPILE_OPTIONS是一个列表,但是COMPILE_FLAGS是一个字符串.

set_target_properties(target PROPERTIES 
    COMPILE_OPTIONS "/option=test1;/option2=test2")
set_target_properties(target PROPERTIES 
    COMPILE_FLAGS "/option=test1 /option2=test2")
Run Code Online (Sandbox Code Playgroud)

您可以更轻松地附加到列表而不是字符串.

此外,COMPILE_OPTIONS正确转义,而某些字符COMPILE_FLAGS可能需要手动转义或导致问题.