Libraries normales¶
add_library(<name> )
Ajoute une cible de bibliothèque appelée <name>
à construire à partir des fichiers sources listés dans l’invocation de la commande. (Les fichiers sources peuvent être omis ici s’ils sont ajoutés ultérieurement à l’aide de target_sources()
.) Le <name>
correspond au nom logique de la cible et doit être globalement unique dans un projet. Le nom de fichier réel de la bibliothèque construite est construit sur la base des conventions de la plate-forme native (comme lib<name>.a
ou<name>.lib
).
STATIC
, SHARED
, ou MODULE
peuvent être donnés pour spécifier le type de bibliothèque à créer. Les bibliothèques STATIC
sont des archives de fichiers objets à utiliser lors de la liaison d’autres cibles. Les bibliothèques SHARED
sont liées dynamiquement et chargées à l’exécution. Les bibliothèques MODULE
sont des plugins qui ne sont pas liés à d’autres cibles mais qui peuvent être chargés dynamiquement à l’exécution en utilisant une fonctionnalité de type dlopen. Si aucun type n’est donné explicitement, le type est STATIC
ou SHARED
selon que la valeur actuelle de la variable BUILD_SHARED_LIBS
est ON
. Pour les bibliothèques SHARED
etMODULE
, la propriété POSITION_INDEPENDENT_CODE
cible est fixée à ON
automatiquement.Une bibliothèque SHARED
ou STATIC
peut être marquée avec la propriété FRAMEWORK
cible pour créer un Framework macOS.
Si une bibliothèque n’exporte aucun symbole, elle ne doit pas être déclarée comme une bibliothèqueSHARED
. Par exemple, une DLL de ressources Windows ou une C++/CLIDLL gérée qui n’exporte aucun symbole non géré devrait être une bibliothèque MODULE
.Cela est dû au fait que CMake s’attend à ce qu’une bibliothèque SHARED
ait toujours une bibliothèque d’importation associée sous Windows.
Par défaut, le fichier de la bibliothèque sera créé dans le répertoire de l’arbre de constructioncorrespondant au répertoire de l’arbre source dans lequel la commande a étéinvoquée. Voir la documentation des propriétés ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
, etRUNTIME_OUTPUT_DIRECTORY
target pour changer cet emplacement. Voir la documentation de la propriété OUTPUT_NAME
target pour modifier la partie <name>
du nom de fichier final.
Si EXCLUDE_FROM_ALL
est donné, la propriété correspondante sera définie sur la cible créée. Voir la documentation de la propriété EXCLUDE_FROM_ALL
target pour plus de détails.
Les arguments source de add_library
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 de buildsystem.