[CMake] CPack option naming and deb generator
Eric Noulard
eric.noulard at gmail.com
Wed Sep 26 06:36:06 EDT 2007
2007/9/26, Fredrik Hultin <fredrik.hultin at gmail.com>:
> Hi
>
> I've got a question and/or suggestion regarding CPack:
> How are the generator specific settings supposed to be sent to the generators?
>
> If I understand the CPack system correctly you're supposed (or at
> least you have the option) to write CPack settings in your
> CMakeLists.txt. This would be achieved by setting up your options with
> SET(CPACK_option "value") followed by a INCLUDE(CPack). CMake then
> checks what options are CPack-specific (starts with CPACK_) and places
> them in the file
> CPackConfig.cmake. But how about the generator specific options that
> don't start with CPACK? DEBIAN_PACKAGE_* for example. Wouldn't it be
> better to name all the options for CPack with the prefix CPACK (like
> CPACK_DEBIAN_PACKAGE_ARCHITECTURE or perhaps CPACK_DEB_ARCHITECTURE)?
May be but I think the idea was to let CPACK_xxx apply to "generic"
generator part while other generator (DEB, ZIP, RPM, ...) would
use <SPECIFIC_PREFIX>_PACKAGE_<xxxxx>.
None the less you may define your own value
for "DEBIAN_PACKAGE_ARCHITECTURE" in your CMakeLists.txt
before INCLUDE(CPack) and your specific value
should be taken into account.
Since CPackDeb.cmake tells:
# Architecture: (mandatory)
IF(NOT DEBIAN_PACKAGE_ARCHITECTURE)
# There is no such thing as i686 architecture on debian, you should
use i386 instead
# $ dpkg --print-architecture
SET(DEBIAN_PACKAGE_ARCHITECTURE i386)
ENDIF(NOT DEBIAN_PACKAGE_ARCHITECTURE)
The same is true for RPM.
The idea is the following,
if the users did not defined a specific value in its CMakeLists.txt
then try to define a appropriate one.
>
> I did a quick modification the deb-generator so that it looked for
> variables named with the CPACK_DEBIAN_PACKAGE prefix instead and my
> settings were indeed transferred from CMakeLists.txt to the
> CPackConfig-file.
The same should be true if you defined:
DEBIAN_PACKAGE_xxxxx
vars in your CMakeLists.txt
>
> I also did a small change to the CPackDeb.cmake file so that it
> defaults to setting the architecture to the current one using dpkg
> --print-architecture rather than simply always setting it to "i386"
> (Since I'm on AMD64 it mislabeled all my generated .deb-packages).
Mathieu (creator for Deb generator) may answer that.
> If you agree you can have the patches, if you don't; please teach me
> how to do it (ie. selecting DEBIAN_PACKAGE_ARCHITECTURE) the proper
> way. ;)
Try to set the var in your CMakeLists.txt before INCLUDE(CPack)
SET(DEBIAN_PACKAGE_ARCHITECTURE "whatever")
INCLUDE(CPack)
--
Erk
More information about the CMake
mailing list