主要问题: cmake 是否有配置,仅显示或忽略来自某个目录的编译器警告/错误?
替代解决方案:如何在 QtCreator 中切换它?
背景/动机:我正在开发一个更大的 CMake 项目,并且只想关注来自我的子项目的警告和错误。我正在与 QtCreator 合作,在一堆外国错误/警告下寻找“我的”错误/警告让我很恼火。
主要问题: cmake 是否有配置,仅显示或忽略来自某个目录的编译器警告/错误?
替代解决方案:如何在 QtCreator 中切换它?
背景/动机:我正在开发一个更大的 CMake 项目,并且只想关注来自我的子项目的警告和错误。我正在与 QtCreator 合作,在一堆外国错误/警告下寻找“我的”错误/警告让我很恼火。
您至少可以在 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 为当前目录及以下目录中的源代码添加标志到编译器命令行。
与@ronkot 的回答基本相同。但不需要add_subdirectory
特定目录,使用set_source_files_properties
withfile(GLOB_RECURSE ...)
也可以。
file(GLOB_RECURSE SRC_DIR "SRC_DIR/*.c" "SRC_DIR/*.h")
set_source_files_properties(
${SRC_DIR}
PROPERTIES
COMPILE_FLAGS "-w"
)
扩展@ronkot 答案,推荐的基于目标的方法是:
target_compile_options(your_target SCOPE compiler-warning-options)
其中和SCOPE
是实际的编译器警告选项,例如. 有关更多信息,请参阅cmake 的文档。PUBLIC|INTERFACE|PRIVATE
compiler-warning-options
-Wall
一般来说,更喜欢使用现代 CMake (3.0+) 的基于目标的方法,而不是基于目录的方法。