répertoires_liens_cible¶

Nouveau dans la version 3.13.

Ajouter des répertoires de liens à une cible.

target_link_directories(<target> <INTERFACE|PUBLIC|PRIVATE> ...])

Spécifie les chemins dans lesquels le linker doit rechercher des bibliothèques lors de la liaison d’une cible donnée. Chaque élément peut être un chemin absolu ou relatif,ce dernier étant interprété comme relatif au répertoire actuel de la source. Ces éléments seront ajoutés à la commande link.

La cible nommée <target> doit avoir été créée par une commande telle queadd_executable() ou add_library() et ne doit pas être une cible ALIAS.

Les mots-clés INTERFACE, PUBLIC et PRIVATE sont nécessaires pour spécifier la portée des éléments qui les suivent. Les éléments PRIVATE etPUBLIC rempliront la propriété LINK_DIRECTORIES de <target>. Les éléments PUBLIC et INTERFACE rempliront la propriétéINTERFACE_LINK_DIRECTORIES de <target>(les cibles IMPORTEES ne supportent que les éléments INTERFACE).Chaque élément spécifie un répertoire de lien et sera converti en chemin absolu si nécessaire avant de l’ajouter à la propriété pertinente. Les appels répétés pour le même <target> ajoutent les éléments dans l’ordre où ils sont appelés.

Si BEFORE est spécifié, le contenu sera ajouté au préalable à la propriété pertinente au lieu d’être ajouté.

Les arguments de target_link_directories peuvent utiliser des “expressions de générateur” avec la syntaxe $<...>. Voir le cmake-generator-expressions(7)manuel pour les expressions disponibles. Voir le cmake-buildsystem(7)manuel pour plus de détails sur la définition des propriétés du système de construction.

Note

Cette commande est rarement nécessaire et devrait être évitée lorsqu’il existe d’autres choix. Préférez passer des chemins absolus complets aux bibliothèques lorsque cela est possible, car cela garantit que la bonne bibliothèque sera toujours liée.La commande find_library() fournit le chemin complet, qui peutgénéralement être utilisé directement dans les appels à target_link_libraries().Les situations où un chemin de recherche de bibliothèque peut être nécessaire incluent:

  • Les générateurs de projet comme Xcode où l’utilisateur peut changer d’architecture cible au moment de la construction, mais un chemin complet vers une bibliothèque ne peut pas être utilisé parce qu’il ne fournit qu’une seule architecture (c’est-à-dire.e. ce n’est pas un binaire universel).

  • Les bibliothèques peuvent elles-mêmes avoir d’autres dépendances de bibliothèques privées qui s’attendent à être trouvées via les mécanismes RPATH, mais certains linkers ne sont pas en mesure de décoder complètement ces chemins (par exemple en raison de la présence de choses comme $ORIGIN).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.