[CMake] Support for multiple components in cpack (reloaded)

Eric Noulard eric.noulard at gmail.com
Sun Aug 22 12:28:13 EDT 2010


2010/8/22 Eric Noulard <eric.noulard at gmail.com>:
> 2010/8/22 Rolf Eike Beer <eike at sf-mail.de>:
>> Am Saturday 21 August 2010 schrieb Eric Noulard:
>>
>>> They change the number and the contents of the generated packages:
>>>     3.a) CPACK_COMPONENTS_ALL_GROUPS_IN_ONE_PACKAGE=1
>>>           means you want to get a single package whose content
>>>           is the merge of all components GROUPS
>>>
>>>     3.b) CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE=1
>>>            means you want to get a single package whose content
>>>            is the merge of all COMPONENTS
>>>
>>>      3.c) CPACK_COMPONENTS_IGNORE_GROUPS
>>>            means you want to get 1 package per COMPONENT
>>>            (the default is 1 package per GROUP)
>>
>> AFAICS those are exlusive, so why don't you use a single variable with 3
>> different values that prints a big fat warning if it is set to anything else to
>> make error detection easier?
>
> Yes they are exclusive.
> I think the main reason for separate variables is because its "usually" the way
> it works with CPack/CMake there are more toggle var 0/1 than switches
> values vars.
>
> But this is a good point what do you suggest:
>
> CPACK_COMPONENTS_GROUPING
> with possible values:
>   ALL_GROUP_IN_ONE
>   ALL_COMPONENT_IN_ONE
>   IGNORE_GROUP

Hi Rolf,

I do update my patchset with your proposal now you can

cpack  -D CPACK_COMPONENTS_GROUPING=<grouping-option> -G <GEN>

if the <grouping-option> is not recognized you'll get a warning.
the previous 3.a/3.b/3.c variables may be used too.

We may keep them both or decide what is the better way to go after some tests.

The new patch
 0003-CPackArchiveGenerator-improve-usability-and-robustne.patch
is on the bug page:
http://public.kitware.com/Bug/view.php?id=10736

Github repo has been updated too:
http://github.com/TheErk/CMake/tree/CPackArchiveGenerator-ComponentSupport

The patch also fix the case where components are defined but
no component groups are defined, in this case we build 1 package per component
instead of 1 package per group.

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


More information about the CMake mailing list