主要问题:是否有cmake的配置,只显示或忽略某个目录中的编译器警告/错误?
替代解决方案:如何在QtCreator中切换此内容?
背景/动机: 我正在开发一个更大的CMake项目,并且只想从我的子项目中关注警告和错误。我正在和QtCreator一起工作,让我在一堆外国人中寻找“我的”错误/警告让我感到很恼火。
答案 0 :(得分:14)
您可以在CMake中至少为某些目标或某些文件设置编译器警告选项。
# For target
set_target_properties(your_project_name PROPERTIES COMPILE_FLAGS "...")
# For files
set_source_files_properties(
${list_of_your_files}
PROPERTIES
COMPILE_FLAGS "..."
)
也可以通过将项目分离为子项目,使用add_subdirectory(your_project)
添加项目并使用项目CMakeLists.txt使用add_definitions(...)
来设置每个文件夹的选项。
来自CMake文档:
add_definitions在编译器命令行中为当前目录及其下的源添加标记。
答案 1 :(得分:1)
与@ronkot的答案基本相同。但是不需要特定目录的add_subdirectory
,将set_source_files_properties
与file(GLOB_RECURSE ...)
一起使用也可以。
file(GLOB_RECURSE SRC_DIR "SRC_DIR/*.c" "SRC_DIR/*.h")
set_source_files_properties(
${SRC_DIR}
PROPERTIES
COMPILE_FLAGS "-w"
)
答案 2 :(得分:0)
扩展@ronkot答案,建议的基于目标的方法是:
target_compile_options(your_target SCOPE compiler-warning-options)
其中SCOPE
是PUBLIC|INTERFACE|PRIVATE
,而compiler-warning-options
是实际的编译器警告选项,例如-Wall
。有关更多信息,请参见cmake's docs。
通常,更喜欢使用现代CMake(3.0+)的基于目标的方法,而不是基于目录的方法。