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?
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