使用CMake将qt标头声明为系统标头

时间:2013-09-25 08:59:28

标签: c++ qt cmake

我使用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

1 个答案:

答案 0 :(得分:4)

此处最简单的解决方案是基于每个文件而不是全局CMAKE_CXX_FLAGS设置警告级别。这样,只有您自己的代码才能获得更高的警告级别,而您不必关心第三方代码。

您可以使用COMPILE_FLAGS属性,该属性同时属于targetfile属性:

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)