(→Notes) |
|||
Line 33: | Line 33: | ||
</pre> | </pre> | ||
{{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 hand 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: |
Revision as of 14:37, 24 January 2011
Guidelines for cmake
More and more projects are moving to cmake, especially with KDE4 making the jump. It seems like it is time to start collecting cmake best practices for generating Fedora RPMS using cmake
RPM Macros
If cmake is installed, see /etc/rpm/macros.cmake
If kde-filesystem is installed, see /etc/rpm/macros.kde4
Specfile Usage
%build %cmake . make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT %check ctest
Notes
NOTE: -DCMAKE_SKIP_RPATH:BOOL=ON
. With recent cmake-2.4, it should not be used. This cmake version should hand 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: