add_library¶

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_CODEcible est fixée à ON automatiquement.Une bibliothèque SHARED ou STATIC peut être marquée avec la propriété FRAMEWORKcible 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_ALLtarget 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.

Laisser un commentaire

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