2017-05-30 2 views
1

Un projet sur lequel je travaille sur des liens vers Google test (gtest) en tant que dépendance. Les en-têtes de test google sont inclus dans le projet via les dépendances d'interface de CMake, en utilisant les CMakeLists inclus dans le projet google test.Inclure les dépendances de projet CMake inclure des répertoires avec -isystem

target_link_libraries (our_project gtest gmock)

Certains des drapeaux d'avertissement que nous avons utilisés pour notre projet sont l'impression des tonnes de mises en garde dans google test- par exemple, GCC -Wsuggest-override. Idéalement, ces avertissements ne seraient pas imprimés car ils proviennent d'une bibliothèque, et je pense que l'inclusion des en-têtes de la bibliothèque avec -isystem est la bonne façon de procéder. Cependant, je ne suis pas sûr comment configurer CMake pour utiliser -isystem pour une bibliothèque spécifiée.

Existe-t-il un moyen de spécifier une dépendance de bibliothèque en tant que bibliothèque système sans modifier gtest, et ignorer les avertissements de celle-ci?

Répondre

0

target_include_directories() offre une option SYSTEM qui fait ce que vous voulez. Ou, si la cible est une cible de bibliothèque importée, remplissez la propriété INTERFACE_SYSTEM_INCLUDE_DIRECTORIES par opposition à la propriété INTERFACE_INCLUDE_DIRECTORIES.

+0

Je suis conscient de ce drapeau, mais le changement devrait être fait dans la bibliothèque en amont. Comment cette modification peut-elle être effectuée sans modifier la bibliothèque en amont? – leecbaker

+0

J'ai tenté de modifier la propriété 'INTERFACE_SYSTEM_INCLUDE_DIRECTORIES' de la cible, mais cela ne supprime pas les avertissements. 'get_target_property (gtest_include_dirs gtest INCLUDE_DIRECTORIES) set_target_properties (propriété gtest INTERFACE_SYSTEM_INCLUDE_DIRECTORIES gtest_include_dirs)' – leecbaker