Directives relatives à la création de paquets avec CMake
Ce document décrit les meilleures pratiques d’utilisation du système de compilation CMake pour la création de paquets Fedora.
Macros disponibles
Dans vos specs, vous utiliserez généralement les macros suivantes :
%cmake
-
Définit CFLAGS, LDFLAGS, etc. et appelle
%__cmake
avec les paramètres appropriés (-DCMAKE_INSTALL_PREFIX:PATH=/usr
etc.). Vous pouvez passer-Doption=valeur
à cette macro afin de définir des options du système de compilation. %cmake_build
-
Compile le projet (en utilisant
%__cmake --build
). %cmake_install
-
Installe le projet compilé (en utilisant
%__cmake --install
). %ctest
-
Exécute les tests définis avec
add_test()
dans le projet (en utilisant%__ctest
).
En créant des paquets pour les logiciels KDE, vous voudrez probablement remplacer %cmake
par %cmake_kf5
ou %cmake_kf6
. Pour plus d’informations, consultez Directives relatives à la création de paquets KDE.
Il est rarement nécessaire (mais permis) d’utiliser ou d’altérer les macros suivantes :
Toutes les macros commençant par un double underscore sont à considérer comme étant privées et INSTABLES et sont susceptibles d’être supprimées à l’avenir. |
%__cmake
-
Chemin d’accès à l’exécutable cmake.
%__ctest
-
Chemin d’accès à l’exécutable ctest.
%__cmake_in_source_build
-
Contrôle si la compilation est effectuée out-of-source (non défini, par défaut) ou in-source (si défini). Si possible, vous devriez utiliser la compilation out-of-source ; en effet, il s’agit de la direction dans laquelle se dirige Fedora et l’upstream CMake.
%__cmake_builddir
-
Contient l’emplacement du répertoire où la compilation a été effectuée. Pour les compilations out-of-source, cette macro contient la même valeur que %_vpath_builddir. Pour les compilations in-source, cette macro contient le répertoire utilisé pour la compilation.
Cette macro existe uniquement à des fins de compatibilité très spécifiques. Pour les compilations out-of-source classiques, cette macro équivaut à %_vpath_builddir
. Elle sera peut-être supprimée à l’avenir.
Remarques
-DCMAKE_SKIP_RPATH:BOOL=ON
. Avec cmake à partir de la version 2.4, cette option ne doit pas être utilisée. Dans les versions récentes, CMake devrait être en mesure de gérer correctement les RPATH. Définir CMAKE_SKIP_RPATH
sur une telle version aurait pour effet de désactiver les RPATH également dans build-dir. Cela pourrait avoir pour effet de lier les binaires aux bibliothèques système (par exemple, lorsqu’une version précédente du paquet est déjà installée) à la place des bibliothèques créées lors de la compilation.
Néanmoins, il se peut que des problèmes liés aux RPATH se produisent si CMake n’est pas utilisé correctement. Par exemple, installer une cible avec INSTALL(FILES ... RENAME ...)
n’a pas pour effet de retirer les RPATH ; pour y remédier, INSTALL(TARGETS ...)
doit être utilisé, et la propriété OUTPUT_NAME
doit être modifiée.
Il existe deux documentations de qualité pour CMake :
Want to help? Learn how to contribute to Fedora Docs ›