【问题标题】:Include CMake project dependency include directories with -isystem使用 -isystem 包含 CMake 项目依赖项包含目录
【发布时间】:2017-05-30 22:45:16
【问题描述】:

我正在处理的一个项目链接到 Google 测试 (gtest) 作为依赖项。谷歌测试标头通过 CMake 的接口依赖项包含在项目中,使用谷歌测试项目中包含的 CMakeLists。

target_link_libraries (our_project gtest gmock)

我们在项目中使用的一些警告标志在 google 测试中打印了大量警告,例如 GCC 的 -Wsuggest-override。理想情况下,这些警告不会被打印出来,因为它们源自库,我认为在库标题中包含 -isystem 是正确的方法。但是,我不确定如何配置 CMake 以将 -isystem 用于指定的库。

有没有一种方法可以在不修改 gtest 的情况下将库依赖项指定为系统库,并忽略来自它的警告?

【问题讨论】:

    标签: gcc cmake googletest gcc-warning


    【解决方案1】:

    target_include_directories() 提供了一个 SYSTEM 选项,可以满足您的需求。或者,如果目标是导入的库目标,则填充 INTERFACE_SYSTEM_INCLUDE_DIRECTORIES 属性而不是 INTERFACE_INCLUDE_DIRECTORIES 属性。

    【讨论】:

    • 我知道这个标志,但需要在上游库中进行更改。如何在不修改上游库的情况下进行这种更改?
    • 我试图修改目标的INTERFACE_SYSTEM_INCLUDE_DIRECTORIES 属性,但这并没有消除警告。 get_target_property(gtest_include_dirs gtest INCLUDE_DIRECTORIES) set_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES gtest_include_dirs)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多