【问题标题】:Declare qt headers as system headers with CMake使用 CMake 将 qt 标头声明为系统标头
【发布时间】:2013-09-25 08:59:27
【问题描述】:

我将 CMake 与 qt 一起使用:

find_package(Qt5 COMPONENTS Widgets)

另外,我想使用高警告级别,并且我想将警告视为错误。 所以我使用:

set( CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra" )

但是,我不关心我使用的库中的警告。 因此,例如,为了包含 boost,我在 include_directories 调用中添加了 SYSTEM,这样我就不会被来自外部库的警告所困扰:

include_directories(SYSTEM ${Boost_INCLUDE_DIR} )

但这不适用于 qt,因为没有明确的 include_directories 声明 我可以在其中添加 SYSTEM

对此我有什么办法吗? 我只在这里找到了对该功能的请求: http://www.itk.org/Bug/print_bug_page.php?bug_id=8710

【问题讨论】:

    标签: c++ qt cmake


    【解决方案1】:

    这里最简单的解决方案是基于每个文件而不是全局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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多