gpt4 book ai didi

c++ - 使用 CMake 将 qt header 声明为系统 header

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:29 27 4
gpt4 key购买 nike

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

最佳答案

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

关于c++ - 使用 CMake 将 qt header 声明为系统 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19000490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com