Compiler errors 使用CMake忽略/仅显示特定目录中的错误/警告

Compiler errors 使用CMake忽略/仅显示特定目录中的错误/警告,compiler-errors,cmake,qt-creator,compiler-warnings,Compiler Errors,Cmake,Qt Creator,Compiler Warnings,主要问题:是否有cmake配置,仅显示或忽略特定目录中的编译器警告/错误 替代解决方案:如何在QtCreator中切换此选项 背景/动机: 我正在从事一个更大的CMake项目,希望只关注子项目中的警告和错误。我正在使用QtCreator,在一堆外来错误/警告下查找“我的”错误/警告让我很恼火。您可以在CMake中设置编译器警告选项,至少针对特定目标或特定文件 通过将项目作为子项目分开,使用add\u子目录(您的\u项目)添加项目,并在您的项目CMakeLists.txt中使用add\u定义(…)

主要问题:是否有cmake配置,仅显示或忽略特定目录中的编译器警告/错误

替代解决方案:如何在QtCreator中切换此选项

背景/动机
我正在从事一个更大的CMake项目,希望只关注子项目中的警告和错误。我正在使用QtCreator,在一堆外来错误/警告下查找“我的”错误/警告让我很恼火。

您可以在CMake中设置编译器警告选项,至少针对特定目标或特定文件

通过将项目作为子项目分开,使用
add\u子目录(您的\u项目)
添加项目,并在您的项目CMakeLists.txt中使用
add\u定义(…)
,也可以设置每个文件夹的选项

来自CMake文档:

在编译器命令行中为当前目录及以下目录中的源添加标志


与@ronkot的答案基本相同。但是不需要为特定目录添加子目录,使用
设置源文件属性
文件(全局递归…
也可以工作

file(GLOB_RECURSE SRC_DIR "SRC_DIR/*.c" "SRC_DIR/*.h")

set_source_files_properties(
  ${SRC_DIR}
  PROPERTIES
  COMPILE_FLAGS "-w"
)

扩展@ronkot answer,建议采用基于目标的方法:

target_compile_options(your_target SCOPE compiler-warning-options)
其中
范围
公共|接口|私有
编译器警告选项
是实际的编译器警告选项,例如
-Wall
。有关更多信息,请参阅


总的来说,与基于目录的方法相比,更喜欢使用基于目标的现代CMake(3.0+)方法。

有趣。
set\u source\u files\u properties()。因此,所有命名的目标都会受到影响,无论它在哪个项目中……注意:此属性[a.k.a.COMPILE_FLAGS]已被COMPILE_OPTIONS属性取代。如果您使用的是较新版本的cmake。
target_compile_options(your_target SCOPE compiler-warning-options)