[CMake] cpack components & archive generators

Eric Noulard eric.noulard at gmail.com
Mon Feb 7 15:38:22 EST 2011


2011/2/7 Clinton Stimpson <clinton at elemtech.com>:
>
> Is there a reason the archive generators append "-ALL" to the package file name
> I specify when I set CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE=1?
>
> Can we leave that to the user to decide if they want "-ALL" by putting it in
> CPACK_PACKAGE_FILE_NAME?

Yes there is.
It is to makes it clear that your requested a ALL-IN-ONE package
mainly because *-ALL packages may not have the same content as MONOLITHIC
which do not get the extra "-ALL".

If you use 2.8.4-rcX you will be able to use CPACK_MONOLITHIC_INSTALL
http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack#Controlling_Differents_Ways_of_packaging_components
in order to get ALL-IN-ONE package without the extra -ALL.

CPACK_MONOLITHIC_INSTALL is now handled at CPack time too so that
you can get monolothic install on a "per-generator" basis if you use
a CPACK_PROJECT_CONFIG_FILE
see:
http://www.cmake.org/Wiki/CMake:CPackPackageGenerators#Overall_usage_.28common_to_all_generators.29

Now we can makes it easier fo control the name mangling scheme of
the multi-files component generators (Archive, RPM and the next to come)
if you have some proposal in mind please go ahead.

Currently the naming scheme is:
${CPACK_PACKAGE_FILE_NAME}-ALL.<ext> for "ALL-IN-ONE" package
${CPACK_PACKAGE_FILE_NAME}-<ComponentName>.<ext> for the 1 file per
component case
${CPACK_PACKAGE_FILE_NAME}-<ComponentName>.<ext> for the 1 file per
component group case

We can add some extra vars to control the name mangling scheme for
ALL cases.

Note that CMake 2.8.3 had a backward compatibility breakage
http://public.kitware.com/Bug/view.php?id=11452
which makes archive generator generate componentized package the default.
2.8.4 won't and became backward compatible again with 2.8.2.

With 2.8.4 and up you'll have to
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
to get componentized archive.
(this may be specified on CPack command line or in CPACK_PROJECT_CONFIG_FILE too
 i.e. it is handled at CPack time)

-- 
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org


More information about the CMake mailing list