Installer des cibles¶

install(TARGETS targets... ] ] ] )

Le formulaire TARGETS spécifie les règles d’installation des cibles d’un projet. Il existe cinq types de fichiers cibles qui peuvent être installés :ARCHIVE, LIBRARY, RUNTIME, FRAMEWORK et BUNDLE.Les exécutables sont traités comme des cibles RUNTIME, sauf ceux marqués de la propriété MACOSX_BUNDLE qui sont traités comme des cibles BUNDLE sous OS X. Les bibliothèques statiques sont traitées comme des cibles ARCHIVE, sauf que celles marquées avec la propriété FRAMEWORK sont traitées comme des cibles FRAMEWORK sur OS X.Les bibliothèques de modules sont toujours traitées comme des cibles LIBRARY.Pour les plateformes non-DLL, les bibliothèques partagées sont traitées comme des cibles LIBRARY, sauf que celles marquées avec la propriété FRAMEWORK sont traitées comme des cibles FRAMEWORK sur OS X. Pour les plates-formes DLL, la partie DLL d’une bibliothèque partagée est traitée comme une cible RUNTIME et la bibliothèque d’importation correspondante est traitée comme une cible ARCHIVE.Tous les systèmes basés sur Windows, y compris Cygwin, sont des plates-formes DLL.Les arguments ARCHIVE, LIBRARY, RUNTIME et FRAMEWORK changent le type de cible auquel les propriétés suivantes s’appliquent.Si aucun n’est donné, les propriétés d’installation s’appliquent à tous les types de cibles. Si un seul est donné, alors seules les cibles de ce type serontinstallées (ce qui peut être utilisé pour installer juste une DLL ou juste une bibliothèque d’importation).

Les arguments PRIVATE_HEADER, PUBLIC_HEADER, et RESOURCEfont en sorte que les propriétés subséquentes soient appliquées à l’installation des fichiers associés d’une cible de bibliothèque FRAMEWORKpartagée sur les plateformes non-Apple. Les règles définies par ces arguments sont ignorées sur les plates-formes Apple car les fichiers associés sont installés dans les emplacements appropriés à l’intérieur du dossier du framework. Voir la documentation des propriétésPRIVATE_HEADER, PUBLIC_HEADER, etRESOURCE de la cible pour plus de détails.

Soit NAMELINK_ONLY, soit NAMELINK_SKIP peut être spécifié comme une optionLIBRARY. Sur certaines plates-formes, une bibliothèque partagée versionnée a un lien symbolique tel que :

lib<name>.so -> lib<name>.so.1

lib<name>.so.1 est le soname de la bibliothèque et lib<name>.soest un « namelink » permettant aux linkers de trouver la bibliothèque lorsqu’on leur donne-l<name>. L’option NAMELINK_ONLY provoque l’installation de seulement thenamelink quand une cible de bibliothèque est installée. L’option NAMELINK_SKIP provoque l’installation de fichiers de bibliothèque autres que le namelink lorsqu’une cible de bibliothèque est installée. Si aucune option n’est donnée, les deux parties sont installées. Sur les plateformes où les bibliothèques partagées versionnées n’ont pas de namelinks ou lorsqu’une bibliothèque n’est pas versionnée, l’optionNAMELINK_SKIP installe la bibliothèque et l’option NAMELINK_ONLY n’installe rien. Voir les propriétés VERSION etSOVERSION target pour des détails sur la création de bibliothèques partagées versionnées.

Le INCLUDES DESTINATION spécifie une liste de répertoires qui seront ajoutés à la propriété INTERFACE_INCLUDE_DIRECTORIEStarget du <targets> lorsqu’il sera exporté par la commandeinstall(EXPORT). Si un chemin relatif est spécifié, il est traité comme relatif à la $<INSTALL_PREFIX>.Ceci est indépendant du reste des groupes d’arguments et n’installe rien en réalité.

Un ou plusieurs groupes de propriétés peuvent être spécifiés dans un seul appel à la forme TARGETS de cette commande. Une cible peut être installée plus d’une fois à différents emplacements. Considérons les cibles hypothétiques myExe,mySharedLib, et myStaticLib. Le code:

install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)

installera myExe à <prefix>/bin et myStaticLib à<prefix>/lib/static. Sur les plateformes non-DLL, mySharedLib sera installé sur <prefix>/lib et /some/full/path. Sur les plateformes DLLla DLL mySharedLib sera installée dans <prefix>/bin et/some/full/path et sa bibliothèque d’importation sera installée dans<prefix>/lib/static et /some/full/path.

L’option EXPORT associe les fichiers cibles installés à une exportation appelée <export-name>. Elle doit apparaître avant toute option RUNTIME,LIBRARY, ou ARCHIVE. Pour installer réellement le fichier d’exportation lui-même, appelez install(EXPORT), documenté ci-dessous.

L’installation d’une cible avec la propriété EXCLUDE_FROM_ALL target définie sur TRUE a un comportement non défini.

La destination d’installation donnée à la cible install DESTINATION peut utiliser des « expressions de générateur » avec la syntaxe $<...>. Voir le manuelcmake-generator-expressions(7) pour les expressions disponibles.

admin

Laisser un commentaire

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

lg