2017-05-30 179 views
1

我正在研究一个项目,将Google测试(gtest)作为依赖项的链接。使用Google测试项目中包含的CMakeLists,通过CMake的接口依赖项,Google测试头包含在项目中。包含CMake项目依赖包含目录与-isystem

target_link_libraries (our_project gtest gmock)

一些我们已经使用了我们的项目的警告标志打印在谷歌测试 - 例如万吨警告,GCC的-Wsuggest-override。理想情况下,这些警告不会被打印出来,因为它们起源于一个库中,并且我认为包含带有-isystem的库头是正确的方法。但是,我不确定如何配置CMake使用指定库的-isystem

有没有一种方法可以指定库依赖作为系统库而不修改gtest,并忽略它的警告?

回答

0

target_include_directories()提供了一个SYSTEM选项,它可以做你想做的。或者,如果目标是导入的库目标,则填充INTERFACE_SYSTEM_INCLUDE_DIRECTORIES属性,而不是INTERFACE_INCLUDE_DIRECTORIES属性。

+0

我知道这个标志,但需要在上游库中进行更改。如何在不修改上游库的情况下进行这种更改? – leecbaker

+0

我试图修改目标的INTERFACE_SYSTEM_INCLUDE_DIRECTORIES属性,但不会删除警告。 (gtest_include_dirs gtest INCLUDE_DIRECTORIES) set_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES gtest_include_dirs) – leecbaker