忽略/仅使用CMake显示某些目录中的错误/警告

时间:2013-02-28 10:39:31

标签: compiler-errors cmake qt-creator compiler-warnings

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

替代解决方案:如何在QtCreator中切换此内容?

背景/动机: 我正在开发一个更大的CMake项目,并且只想从我的子项目中关注警告和错误。我正在和QtCreator一起工作,让我在一堆外国人中寻找“我的”错误/警告让我感到很恼火。

3 个答案:

答案 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_propertiesfile(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)

其中SCOPEPUBLIC|INTERFACE|PRIVATE,而compiler-warning-options是实际的编译器警告选项,例如-Wall。有关更多信息,请参见cmake's docs

通常,更喜欢使用现代CMake(3.0+)的基于目标的方法,而不是基于目录的方法。

相关问题