Cmake bibliothèques de liens cibles dépendances D'Interface

Je suis nouveau sur CMAKE et un peu confondu avec les mots-clés PUBLIC, PRIVATE et INTERFACE liés à target_link_libraries. La Documentation mentionne qu'ils peuvent être utilisés pour spécifier à la fois les dépendances de lien et l'interface de lien dans une commande.

Que signifient réellement les dépendances de lien et l'interface de lien?

35
demandé sur Poorna 2014-09-25 15:52:09

1 réponses

Si vous créez une bibliothèque partagée et que vos fichiers cpp source #incluent les en-têtes d'une autre bibliothèque (par exemple, QtNetwork), mais que vos fichiers d'en-tête n'incluent pas les en-têtes QtNetwork, QtNetwork est une dépendance PRIVATE.

Si vos fichiers source et vos en-têtes incluent les en-têtes d'une autre bibliothèque, il s'agit d'une dépendance PUBLIC.

Si vos fichiers d'en-tête, mais pas vos fichiers source inclure les en-têtes d'une autre bibliothèque, il est un INTERFACE dépendance.

Les autres propriétés de construction des dépendances PUBLIC et INTERFACE sont propagées aux bibliothèques consommatrices. http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements

92
répondu steveire 2014-09-25 12:16:00