Pautas de Empaquetado de CMake

Este documento proporciona las prácticas mejores para el empleo de sistema de compilación CMake en los paquetes Fedora.

Compilar Dependencias

DEBE añadir siguiendo BuildRequires:

BuildRequires: cmake

Macros Disponibles

Generalmente, utilizarás estos en tus especificaciones:

%cmake

Define CFLAGS, LDFLAGS, etc. e invoca a %__cmake con los parámetros adecuados (-DCMAKE_INSTALL_PREFIX:PATH=/usr, etc.). Puede pasar -Doption=value a esta macro para configurar las opciones del sistema de compilación.

%cmake_build

Compila el proyecto (utilizando %__cmake --build).

%cmake_install

Instala el proyecto compilado (utilizando %__cmake --install).

%ctest

Ejecuta las pruebas que están definidas con add_test() en el proyecto (utilizando %__ctest).

Al empaquetar software de KDE, lo más probable es que se sustituya %cmake por %cmake_kf5 o %cmake_kf6. Para más información, consulte Directrices de empaquetado de KDE.

Es raramente necesario (pero permisible) utilizar o alterar estos:

Todas las macros que comienzan con doble guión bajo deben ser privadas, NO estables y es probable que se eliminen en el futuro.
%__cmake

La ruta al cmake ejecutable.

%__ctest

La ruta al ctest ejecutable.

%__cmake_in_source_build

Controla si las compilaciones se realizan fuera de la fuente (si no está definido, es el valor predeterminado) o en el código fuente (si está definido). Siempre que sea posible, se recomienda usar compilaciones fuera del código fuente, ya que esta es la dirección en la que se mueven tanto Fedora como CMake.

%__cmake_builddir

Mantener el lugar del directorio actual donde se hizo la compilación. Cuando compile fuera-de-la-fuente, esta macro es la misma que %_vpath_builddir. Cunado haga compilaciones dentro de la fuente, esta macro mantendrá el lugar actual que fue utilizado para la compilación.

Esta macro solo es adecuada por razones de compatibilidad excepcionales. Para compilaciones externas normales, esta macro es igual a %_vpath_builddir. Es posible que se elimine en el futuro.

Ejemplo de Uso

%build
%cmake
%cmake_build

%install
%cmake_install

%check
%ctest

Notas

-DCMAKE_SKIP_RPATH:BOOL=ON. Con la reciente versión cmake-2.4, no debería usarse. Esta versión de CMake debería gestionar correctamente los problemas de RPATH (establecerlos en el directorio de compilación y eliminarlos durante la instalación). Configurar CMAKE_SKIP_RPATH para esta versión también evitaría los RPATH en el directorio de compilación. Esto podría vincular binarios con bibliotecas del sistema (por ejemplo, al instalar una versión anterior del paquete) en lugar de con las bibliotecas creadas por la compilación.

Sin embargo, podrían surgir problemas con RPATH si CMake se usa incorrectamente. Por ejemplo, instalar un destino con INSTALL(FILES ... RENAME ...) no eliminará los rpaths; en este caso, INSTALL(TARGETS ...) debe usarse junto con la modificación de la propiedad OUTPUT_NAME.

CMake tiene buena documentación en dos lugares: