最佳答案
我想使用一组全局标志来编译一个项目,这意味着在我的顶级 CMakeLists.txt 文件中我已经指定:
ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x )
但是,对于子目录中的特定文件(比方说“ foo.cpp”) ,我希望切换 编译标志不适用-Weffc + + (包括商业库,我不能更改)。为了简化只使用-Wall 的情况,我尝试了:
SET_SOURCE_FILES_PROPERTIES( foo.cpp PROPERTIES COMPILE_FLAGS -Wall )
ADD_EXECUTABLE( foo foo.cpp )
,这没有工作。 我也试过
SET_PROPERTY( SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall )
ADD_EXECUTABLE( foo foo.cpp )
还有
ADD_EXECUTABLE( foo foo.cpp )
SET_TARGET_PROPERTIES( foo PROPERTIES COMPILE_FLAGS -Wall )
两者都不起作用。
最后,我试着去掉这个定义:
REMOVE_DEFINITIONS( -Weffc++ )
ADD_EXECUTABLE( foo foo.cpp )
ADD_DEFINITIONS( -Weffc++ )
,这也没有工作(这意味着,我得到了很多关于商业图书馆的样式警告)。 (* * 注意: 如果在构建可执行文件后不重新包含-Weffc + + 指令,则警告将被取消。)
我还尝试临时删除编译标志: Http://www.cmake.org/pipermail/cmake/2007-june/014614.html 但是没有用。
难道没有一个优雅的解决方案吗?