(Add links to cmake documentation) |
(Deprecate page.) |
||
(10 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{OldGuidelinePage|CMake}} | |||
= Guidelines for cmake = | = Guidelines for cmake = | ||
This document provides cmake best-practices for generating Fedora RPMS using cmake | |||
Line 9: | Line 9: | ||
== RPM Macros == | == RPM Macros == | ||
If cmake is installed, see /usr/lib/rpm/macros.d/cmake or /etc/rpm/macros.cmake on EL6. | |||
If kde-filesystem is installed, see /usr/lib/rpm/macros.d/macros.kde4 | |||
Line 35: | Line 20: | ||
%build | %build | ||
%cmake . | %cmake . | ||
%make_build | |||
%install | %install | ||
%make_install | |||
%check | %check | ||
ctest | ctest -V %{?_smp_mflags} | ||
</pre> | </pre> | ||
{{Anchor|cmakeNotes}} | {{Anchor|cmakeNotes}} | ||
== Notes == | == Notes == | ||
'''NOTE''': <code>-DCMAKE_SKIP_RPATH:BOOL=ON</code>. With recent cmake-2.4, it should not be used. This cmake version | '''NOTE''': <code>-DCMAKE_SKIP_RPATH:BOOL=ON</code>. With recent cmake-2.4, it should not be used. This cmake version should handle RPATHs issues correctly (set them in build-dir, remove them during installation). Setting <code>CMAKE_SKIP_RPATH</code> for this version would avoid RPATHs in build-dir too. This might link binaries against system-libraries (e.g. when a previous version of the package was installed) instead of the libraries which were created by the build. | ||
Nevertheless, RPATH issues might arise when cmake was used improperly. E.g. installing a target with <code>INSTALL(FILES ... RENAME ...)</code> will '''not''' strip rpaths; in this case <code>INSTALL(TARGETS ...)</code> must be used in combination with changing the <code>OUTPUT_NAME</code> property. | Nevertheless, RPATH issues might arise when cmake was used improperly. E.g. installing a target with <code>INSTALL(FILES ... RENAME ...)</code> will '''not''' strip rpaths; in this case <code>INSTALL(TARGETS ...)</code> must be used in combination with changing the <code>OUTPUT_NAME</code> property. | ||
'''NOTE''': cmake has good documentation in two places: | '''NOTE''': cmake has good documentation in two places: | ||
* http://www.cmake.org/ | * http://www.cmake.org/documentation/ | ||
* http://www.cmake.org/Wiki/CMake | * http://www.cmake.org/Wiki/CMake | ||
[[Category:Packaging guidelines]] |
Latest revision as of 03:38, 20 December 2018
Guidelines for cmake
This document provides cmake best-practices for generating Fedora RPMS using cmake
RPM Macros
If cmake is installed, see /usr/lib/rpm/macros.d/cmake or /etc/rpm/macros.cmake on EL6.
If kde-filesystem is installed, see /usr/lib/rpm/macros.d/macros.kde4
Specfile Usage
%build %cmake . %make_build %install %make_install %check ctest -V %{?_smp_mflags}
Notes
NOTE: -DCMAKE_SKIP_RPATH:BOOL=ON
. With recent cmake-2.4, it should not be used. This cmake version should handle RPATHs issues correctly (set them in build-dir, remove them during installation). Setting CMAKE_SKIP_RPATH
for this version would avoid RPATHs in build-dir too. This might link binaries against system-libraries (e.g. when a previous version of the package was installed) instead of the libraries which were created by the build.
Nevertheless, RPATH issues might arise when cmake was used improperly. E.g. installing a target with INSTALL(FILES ... RENAME ...)
will not strip rpaths; in this case INSTALL(TARGETS ...)
must be used in combination with changing the OUTPUT_NAME
property.
NOTE: cmake has good documentation in two places: