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 RESOURCE
font en sorte que les propriétés subséquentes soient appliquées à l’installation des fichiers associés d’une cible de bibliothèque FRAMEWORK
partagé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
où lib<name>.so.1
est le soname de la bibliothèque et lib<name>.so
est 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_DIRECTORIES
target 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.