paquet d'installation cmake

cmake installer

introduire

Site officiel de cmake : https://cmake.org/
Adresse de téléchargement de cmake :
https://cmake.org/files/
https://github.com/Kitware/CMake/releases
https://github.com/SFUMECJF/cmake - exemples-chinois

Lors de l'utilisation de cmake, les étapes les plus courantes sont :

mkdir build && cd build
cmake ..
make
make install

La commande install est utilisée pour définir les règles d'installation. Le contenu installé peut inclure des binaires cibles, des bibliothèques dynamiques, des bibliothèques statiques, des fichiers, des répertoires, des scripts, etc.

install(TARGETS <target>... [...])
install({
    
    FILES | PROGRAMS} <file>... [...])
install(DIRECTORY <dir>... [...])
install(SCRIPT <file> [...])
install(CODE <code> [...])
install(EXPORT <export-name> [...])

Une variable très utile CMAKE_INSTALL_PREFIX est également utilisée pour spécifier le préfixe d'adresse relatif lors de l'installation de cmake. Utilisation telle que :

cmake -DCMAKE_INSTALL_PREFIX=/usr ..


DESTINATION 定义了安装的路径,如果路径以/开头,那么指的是绝对路径,这时候
CMAKE_INSTALL_PREFIX 其实就无效了。如果你希望使用 CMAKE_INSTALL_PREFIX 来
定义安装路径,就要写成相对路径,即不要以/开头,那么安装后的路径就是
${CMAKE_INSTALL_PREFIX}/<DESTINATION 定义的路径

在CMake中,采用 CMAKE_INSTALL_PREFIX来指定文件的安装位置,Linux下默认是/usr/local;Windows的默认值为 c:/Program Files/${PROJECT_NAME}

Introduction à la commande d'installation

Installation des fichiers cibles

install(TARGETS targets... [EXPORT <export-name>]
        [[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|
        PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]
        [DESTINATION <dir>]
        [PERMISSIONS permissions...]
        [CONFIGURATIONS [Debug|Release|...]]
        [COMPONENT <component>]
        [NAMELINK_COMPONENT <component>]
        [OPTIONAL] [EXCLUDE_FROM_ALL]
        [NAMELINK_ONLY|NAMELINK_SKIP]
        ] [...]
        [INCLUDES DESTINATION [<dir> ...]]
        )

dans les paramètresCIBLEIl peut s'agir de plusieurs types de fichiers cibles, le plus courant étant viaADD_EXECUTABLEouADD_LIBRARYLe fichier cible défini, c'est-à-direBinaire exécutable, bibliothèque dynamique, bibliothèque statique

Fichier cible contenu Variables du répertoire d'installation Dossier d'installation par défaut
ARCHIVE bibliothèque statique ${CMAKE_INSTALL_LIBDIR} lib
BIBLIOTHÈQUE bibliothèque dynamique ${CMAKE_INSTALL_LIBDIR} lib
DURÉE Fichier binaire exécutable ${CMAKE_INSTALL_BINDIR} poubelle
PUBLIC_HEADER Fichiers d'en-tête PUBLIC associés à la bibliothèque ${CMAKE_INSTALL_INCLUDEDIR} inclure
PRIVATE_HEADER Fichiers d'en-tête PRIVATE associés à la bibliothèque ${CMAKE_INSTALL_INCLUDEDIR} inclure

Afin de respecter le chemin d'installation général par défaut, si le paramètre DESTINATION est défini , il est recommandé de configurer le dossier sous la variable répertoire d'installation.

Par exemple:

INSTALL(TARGETS myrun mylib mystaticlib
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

L'exemple ci-dessus installera : l'exécutable binaire myrun dans le répertoire CMAKEINSTALLBINDIR ** **, la bibliothèque dynamique libmylib.so dans le répertoire ** ** {CMAKE_INSTALL_BINDIR}** et la bibliothèque dynamique libmylib.so dans **C M A K EJeN S T A L LBI N D I R*Répertoire , bibliothèque dynamique l i b m y l i b . s o est installé sur* {CMAKE_INSTALL_LIBDIR}, la bibliothèque statique libmystaticlib.a est installée dans${CMAKE_INSTALL_LIBDIR}.
La signification de certains autres paramètres :

  • DESTINATION : SpécificationRépertoire sur le disque où les fichiers doivent être installés
  • AUTORISATIONS : SpécificationAutorisations du fichier d'installation。Il s'agit de OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_WRITE, GROUP_EXECUTE, WORLD_READ, WORLD_WRITE, WORLD_EXECUTE, SETUID et SETGID.
  • CONFIGURATIONS : Spécifier les règles d'installationListe des configurations de build applicables (DEBUG ou RELEASE, etc.) ;
  • EXCLUDE_FROM_ALL : Spécifie que le fichier est exclu de l'installation complète et installé uniquement dans le cadre d'une installation spécifique au composant ;
  • OPTIONNEL : La précision n'est pas une erreur si le fichier à installer n'existe pas.
    Faites attentionParamètres de configuration, la valeur spécifiée par cette option s'applique uniquement aux options répertoriées après cette option : par exemple, pour définir des chemins d'installation distincts pour les configurations de débogage et de version, procédez comme suit :
install(TARGETS target
        CONFIGURATIONS Debug
        RUNTIME DESTINATION Debug/bin)
        install(TARGETS target
        CONFIGURATIONS Release
        RUNTIME DESTINATION Release/bin)

En d'autres termes, les chemins d'installation DESTINATION des versions DEBUG et RELEASE sont différents, donc DESTINATION doit être derrière CONFIGUATIONS .

Installation de fichiers ordinaires

install(<FILES|PROGRAMS> files...
        TYPE <type> | DESTINATION <dir>
        [PERMISSIONS permissions...]
        [CONFIGURATIONS [Debug|Release|...]]
        [COMPONENT <component>]
        [RENAME <name>] [OPTIONAL] [EXCLUDE_FROM_ALL])

FICHIERS|PROGRAMMES siLes noms de fichiers donnés par des chemins relatifs seront interprétés par rapport au répertoire source actuel. dans,FILES est un fichier texte ordinaire,PROGRAMMES fait référence aux programmes exécutables qui ne sont pas des fichiers cibles (tels que les fichiers de script)

Si le paramètre PERMISSIONS n'est pas fourni, par défaut ,fichier texte ordinaireaura les autorisations OWNER_WRITE, OWNER_READ, GROUP_READ et WORLD_READ, soit 644 autorisations ; tandis queProgramme exécutable de fichier non-objetAura OWNER_EXECUTE, GROUP_EXECUTE et WORLD_EXECUTE, soit 755 autorisations.

Parmi eux, cmake fournit également des chemins d'installation par défaut pour différents TYPEs, comme indiqué dans le tableau suivant :

TYPEtype Variables du répertoire d'installation Dossier d'installation par défaut
POUBELLE ${CMAKE_INSTALL_BINDIR} poubelle
SBIN ${CMAKE_INSTALL_SBINDIR} sbin
librairie ${CMAKE_INSTALL_LIBDIR} lib
INCLURE ${CMAKE_INSTALL_INCLUDEDIR} inclure
CONFSYSTEME ${CMAKE_INSTALL_SYSCONFDIR} etc.
ÉTAT PARTAGÉ ${CMAKE_INSTALL_SHARESTATEDIR} com
ÉTAT LOCAL ${CMAKE_INSTALL_LOCALSTATEDIR} était
ÉTAT D'EXÉCUTION ${CMAKE_INSTALL_RUNSTATEDIR} /courir
DONNÉES ${CMAKE_INSTALL_DATADIR}
INFO ${CMAKE_INSTALL_INFODIR} /Info
LIEU ${CMAKE_INSTALL_LOCALEDIR} /lieu
HOMME ${CMAKE_INSTALL_MANDIR} /homme
DOCUMENT ${CMAKE_INSTALL_DOCDIR} /doc

Notez que certains types de valeurs par défaut intégrées utilisent le répertoire DATAROOT comme préfixe, avec la valeur de la variable CMAKE_INSTALL_DATAROOTDIR comme contenu.

La signification de certains autres paramètres :

  • DESTINATION : SpécificationRépertoire sur le disque où les fichiers doivent être installés
  • AUTORISATIONS : SpécificationAutorisations du fichier d'installation。Il s'agit de OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_WRITE, GROUP_EXECUTE, WORLD_READ, WORLD_WRITE, WORLD_EXECUTE, SETUID et SETGID.
  • CONFIGURATIONS : Spécifier les règles d'installationListe des configurations de build applicables (DEBUG ou RELEASE, etc.) ;
  • EXCLUDE_FROM_ALL : Spécifie que le fichier est exclu de l'installation complète et installé uniquement dans le cadre d'une installation spécifique au composant ;
  • OPTIONNEL : La précision n'est pas une erreur si le fichier à installer n'existe pas.
  • RENAME : Spécifie le nom du fichier installé, qui peut être différent du fichier d'origine. Le renommage n'est autorisé que si la commande a installé un seul fichier.

Installation du répertoire

install(DIRECTORY dirs...
        TYPE <type> | DESTINATION <dir>
        [FILE_PERMISSIONS permissions...]
        [DIRECTORY_PERMISSIONS permissions...]
        [USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER]
        [CONFIGURATIONS [Debug|Release|...]]
        [COMPONENT <component>] [EXCLUDE_FROM_ALL]
        [FILES_MATCHING]
        [[PATTERN <pattern> | REGEX <regex>]
        [EXCLUDE] [PERMISSIONS permissions...]] [...])

Cette commande vaLe contenu d'un ou plusieurs répertoires est installé vers une destination donnée. La structure des répertoires est copiée une par une vers l'emplacement cible.. Le dernier composant de chaque nom de répertoire est ajouté au répertoire cible, mais cela peut être évité en utilisant une barre oblique finale, qui laisse le dernier composant vide. Qu'est-ce que ça veut dire?

Par exemple,Si DIRECTORY est suivi de abc, cela signifie que le répertoire abc sera installé dans le chemin cible. abc/ signifie que le contenu du répertoire abc sera installé dans le chemin cible, mais le répertoire abc lui-même ne sera pas installé.. Autrement dit, si le nom du répertoire ne se termine pas par /, alors ce répertoire sera installé en tant que abc dans le chemin cible. Si le nom du répertoire se termine par /, cela signifie que le contenu de ce répertoire sera installé sur le chemin cible, mais pas le répertoire lui-même.

FILE_PERMISSIONSetDIRECTORY_PERMISSIONSLes options spécifient les autorisations sur les fichiers et répertoires de la cible. Si USE_SOURCE_PERMISSIONS est spécifié et que FILE_PERMISSIONS n'est pas spécifié, les autorisations de fichiers sont copiées à partir de la structure du répertoire source.Si les autorisations ne sont pas spécifiées, les fichiers recevront les autorisations par défaut spécifiées dans le formulaire FILES de la commande (644 autorisations) et les répertoires recevront les autorisations par défaut spécifiées dans le formulaire PROGRAMMES de la commande (755 autorisations).

peut utiliserOptions PATTERN ou REGEX pour contrôler l'installation des répertoires avec une granularité fine, vous pouvez spécifier un modèle générique ou une expression régulière pour correspondre aux répertoires ou fichiers rencontrés dans le répertoire d'entrée. PATTERN ne correspondra qu'au nom de fichier complet, tandis que REGEX correspondra à n'importe quelle partie du nom de fichier, mais il peut simuler le comportement de PATTERN en utilisant / et $.

Certains paramètres suivant une expression PATTERN ou REGEX s'appliquent uniquement aux fichiers ou répertoires qui satisfont à l'expression. Par exemple : l'option EXCLUDE ignorera les fichiers ou répertoires correspondants. L'option PERMISSIONS remplacera les paramètres d'autorisation pour les fichiers ou répertoires correspondants.

Par exemple:

INSTALL(DIRECTORY icons scripts/ DESTINATION share/myproj
        PATTERN "CVS" EXCLUDE
        PATTERN "scripts/*"
        PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
        GROUP_EXECUTE GROUP_READ)

Le résultat de l'exécution de la commande est le suivant : installez le répertoire d'icônes dans share/myproj et installez le contenu de scripts/ dans share/myproj. Aucun des deux répertoires ne contient de sous-répertoire nommé CVS. Les autorisations spécifiées pour les fichiers scripts/* sont OWNER_EXECUTE, OWNER_WRITE. , OWNER_READ, GROUP_EXECUTE, GROUP_READ.

Exécuter le script pendant l'installation

Parfois, vous devez imprimer certaines instructions ou exécuter des instructions cmake pendant le processus d'installation :

install([[SCRIPT <file>] [CODE <code>]]
[COMPONENT <component>] [EXCLUDE_FROM_ALL] [...])

Le paramètre SCRIPT sera appelé pendant le processus d'installation donnéFichier de script CMake(c'est-à-dire un fichier de script .cmake), si le nom du fichier de script est un chemin relatif, il sera interprété par rapport au répertoire source actuel. Le paramètre CODE appellera le code CMake donné lors de l'installation. Spécifiez le code sous forme de paramètre unique dans une chaîne entre guillemets doubles.
Par exemple:

install(CODE "MESSAGE(\"Sample install message.\")")

La commande exécutera le code cmake et imprimera les instructions pendant le processus d'installation.

cmake -dcmake_install_prefix=/usr

Spécifiez le chemin d'installation comme /usr

Le préfixe du chemin d'installation spécifie :

Le répertoire d'installation est /usr/local. Si vous souhaitez modifier le répertoire d'installation, il existe trois manières.

Spécifier quand la ligne de commande cmake

    cmake  -DCMAKE_INSTALL_PREFIX = /usr/local/

La commande set spécifie

    set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})

Je suppose que tu aimes

Origine blog.csdn.net/u010523811/article/details/127957938
conseillé
Classement