**main question:**cmake是否有一个配置,只显示或忽略来自某个目录的编译器警告/错误?**替代方案:**如何在QtCreator中切换?background / motivation:我正在做一个更大的CMake项目,希望只关注我的子项目中的警告和错误。我正在使用QtCreator,在一堆外来的错误/警告下寻找“我的”错误/警告让我很恼火。
r1zk6ea11#
您可以在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在编译器命令行中为当前目录及其下的源代码添加标志。
add_subdirectory(your_project)
add_definitions(...)
0g0grzrc2#
基本上和@ronkot的答案一样。但是对于某些目录不需要add_subdirectory,使用set_source_files_properties和file(GLOB_RECURSE ...)也可以。
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" )
字符串
eimct9ow3#
扩展@ronkot的答案,建议的基于目标的方法是:
target_compile_options(your_target SCOPE compiler-warning-options)
字符串其中SCOPE是PUBLIC|INTERFACE|PRIVATE,而compiler-warning-options是实际的编译器警告选项,例如-Wall。有关更多信息,请参见cmake's docs。一般来说,更喜欢使用现代CMake(3.0+)的基于目标的方法,而不是基于目录的方法。
SCOPE
PUBLIC|INTERFACE|PRIVATE
compiler-warning-options
-Wall
dwbf0jvd4#
这似乎可以正确地将选项添加到特定文件中,而不是像其他答案那样删除所有预设选项:
set_source_files_properties( "../src/io/filesystem/zip/ioapi.c" "../src/io/filesystem/zip/unzip.c" "../src/io/filesystem/zip/zip.c" PROPERTIES APPEND_STRING PROPERTY COMPILE_FLAGS " -w" )
4条答案
按热度按时间r1zk6ea11#
您可以在CMake中设置编译器警告选项,至少针对某些 * 目标 * 或某些 * 文件 *。
字符串
也可以通过将项目分离为子项目来设置每个文件夹的选项,使用
add_subdirectory(your_project)
添加它,并在项目CMakeLists.txt中使用add_definitions(...)
。来自CMake文档:
add_definitions在编译器命令行中为当前目录及其下的源代码添加标志。
0g0grzrc2#
基本上和@ronkot的答案一样。但是对于某些目录不需要
add_subdirectory
,使用set_source_files_properties
和file(GLOB_RECURSE ...)
也可以。字符串
eimct9ow3#
扩展@ronkot的答案,建议的基于目标的方法是:
字符串
其中
SCOPE
是PUBLIC|INTERFACE|PRIVATE
,而compiler-warning-options
是实际的编译器警告选项,例如-Wall
。有关更多信息,请参见cmake's docs。一般来说,更喜欢使用现代CMake(3.0+)的基于目标的方法,而不是基于目录的方法。
dwbf0jvd4#
这似乎可以正确地将选项添加到特定文件中,而不是像其他答案那样删除所有预设选项:
字符串