21

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

替代解决方案:如何在 QtCreator 中切换它?

背景/动机:我正在开发一个更大的 CMake 项目,并且只想关注来自我的子项目的警告和错误。我正在与 QtCreator 合作,在一堆外国错误/警告下寻找“我的”错误/警告让我很恼火。

4

3 回答 3

26

您至少可以在 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 为当前目录及以下目录中的源代码添加标志到编译器命令行。

于 2013-03-01T06:20:05.623 回答
8

与@ronkot 的回答基本相同。但不需要add_subdirectory特定目录,使用set_source_files_propertieswithfile(GLOB_RECURSE ...)也可以。

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

set_source_files_properties(
  ${SRC_DIR}
  PROPERTIES
  COMPILE_FLAGS "-w"
)
于 2018-11-21T01:53:24.380 回答
1

扩展@ronkot 答案,推荐的基于目标的方法是:

target_compile_options(your_target SCOPE compiler-warning-options)

其中和SCOPE是实际的编译器警告选项,例如. 有关更多信息,请参阅cmake 的文档PUBLIC|INTERFACE|PRIVATEcompiler-warning-options-Wall

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

于 2020-11-05T11:28:35.600 回答