2011/4/25 Clifford Yapp cliffy...@gmail.com:
I'm trying to generate both source tarballs and binary packages using
CPack, and I'm at something of a loss as to how to achieve the
following:
I want the binaries (RPM, DEB, etc.) to respect the
CMAKE_INSTALL_PREFIX. I want the source tarballs to expand into their
directory like a standard tarball, without any prefix directories. As
far as I can tell, both source and binary packaging structure is
governed by CPACK_PACKAGING_INSTALL_PREFIX - am I missing something
that will let me specify one setting for binary archives and another
for source archives?
Nope your are not missing anything beside the fact that
there is nothing like a source generator known to cpack!!! :-(.
All generators do include a CPack Config file in order to configure
their behavior
so
package ==
cpack --config ./CPackConfig.cmake
package_source ==
cpack --config ./CPackSourceConfig.cmake
include(CPack) is generating this two config files using various
CPACK_xxx var values
but there is no such thing as a source generator.
e.g. CPack generator used for source or binary is the same generator
using a different config file.
(Ideal would be per-generator settings, so I
could generate a binary tar.gz bundle that would expand locally as
well, but the really important one is source tarballs.)
per-generator settings is doable using CPack project config file:
http://www.cmake.org/Wiki/CMake:CPackPackageGenerators#Overall_usage_.28common_to_all_generators.29
inside the CPack project file you should be able to guess whether if
CPack is running for a SOURCE package because the
CPACK_SOURCE_PACKAGE_FILE_NAME
is defined which shouldn't be the case when packaging for binaries.
you may try with a CPack project file which could look like:
if(CPACK_GENERATOR MATCHES ZIP)
if (CPACK_SOURCE_PACKAGE_FILE_NAME)
set(CPACK_PACKAGING_INSTALL_PREFIX /SRC-ZIPprefix)
else ()
set(CPACK_PACKAGING_INSTALL_PREFIX /ZIPprefix)
endif()
endif(CPACK_GENERATOR MATCHES ZIP)
if(CPACK_GENERATOR MATCHES RPM)
set(CPACK_PACKAGING_INSTALL_PREFIX /RPMprefix)
endif(CPACK_GENERATOR MATCHES RPM)
if(CPACK_GENERATOR MATCHES DEB)
set(CPACK_PACKAGING_INSTALL_PREFIX /DEBprefix)
endif(CPACK_GENERATOR MATCHES DEB)
if the toplevel dir you find in archive generators (TGZ, TBZ2, ZIP, ...)
is bothering you you can suppress it using:
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
you can set this conditionnally in the CPack project file as well.
--
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org
___
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake