[CMake] Packaging DEB at different directory with CPack
Eric Noulard
eric.noulard at gmail.com
Tue Jan 24 02:21:23 EST 2012
2012/1/24 Damián Nohales <damiannohales at gmail.com>:
> Hello,
>
> I'm doing an application for Debian based systems and I need to package
> a .deb file, my application has several files to install in addition to
> the main executable.
>
> So, my CMakeLists.txt file looks like:
>
> --------
> project("myapp" C)
> cmake_minimum_required(VERSION 2.8)
>
> # The executable
> add_executable(myapp main.c)
> install(TARGETS myapp RUNTIME DESTINATION bin)
this is ok.
>
> # Another file to install
> install(FILES ${CMAKE_SOURCE_DIR}/data/myapp.desktop DESTINATION
> "${CMAKE_INSTALL_PREFIX}/share/applications")
This is usually wrong as it is an absolute PATH destination
why don't you simply specify
install(FILES ${CMAKE_SOURCE_DIR}/data/myapp.desktop DESTINATION
share/applications)
> SET(CPACK_GENERATOR "DEB")
> SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Damián Nohales")
>
> INCLUDE(CPack)
> --------
>
> I execute CMake and build the package in this way:
>
> --------
> $ cd build
> $ cmake -DCMAKE_INSTALL_PREFIX=install ..
Specifying CMAKE_INSTALL_PREFIX has no effect on the following CPack call
> $ make package
> --------
>
> I need to specify a prefix for the installation because I want to test
> the application without installing on my whole system.
Then you should override CPACK_PACKAGING_INSTALL_PREFIX
$ cd build
$ cpack -D CPACK_PACKAGING_INSTALL_PREFIX=$HOME/testinstall -G DEB
another possibility is to install you deb content at an alternate location
using
dpkg --instdir=$HOME/testinstall -i your.deb
> But the .deb content resulting of executing "make package" is not what I
> expected:
>
[...]
>
> Well, I'm sure you are understanding the problem, I'm expecting that the
> generated .deb package to has the files under the /usr directory having
> too the myapp.desktop file under the following filename
> "/usr/share/applications/myapp.desktop".
>
> Any suggestion?
Always use relative DESTINATION install path unless you forcibly want
an ABSOLUTE destination.
--
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org
More information about the CMake
mailing list