我使用CMt和qt说:
find_package(Qt5 COMPONENTS Widgets)
另外,我想使用高警告级别,我希望将警告视为错误。 所以我用:
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra" )
但是,我并不关心我使用的库中的警告。
因此,举例来说,要在SYSTEM
调用中添加{I}前置include_directories
,所以我不会受到来自外部库的警告的困扰:
include_directories(SYSTEM ${Boost_INCLUDE_DIR} )
但这对qt不起作用,因为没有明确的include_directories
语句
在哪里我可以提前SYSTEM
。
我能做些什么吗? 我在这里只找到了该功能的请求: http://www.itk.org/Bug/print_bug_page.php?bug_id=8710
答案 0 :(得分:4)
此处最简单的解决方案是基于每个文件而不是全局CMAKE_CXX_FLAGS
设置警告级别。这样,只有您自己的代码才能获得更高的警告级别,而您不必关心第三方代码。
您可以使用COMPILE_FLAGS
属性,该属性同时属于target和file属性:
set_property(TARGET <your_target_goes_here>
APPEND PROPERTY COMPILE_FLAGS "-Werror -Wall -Wextra")
缺点是您必须为每个目标重复此行,因此您可能希望将其包装到CMake函数中以方便使用。
如果您使用的是CMake版本3或更高版本,则应使用target_compile_options
而不是手动设置属性:
target_compile_options(<your_target_goes_here> PRIVATE -Werror -Wall -Wextra)