[CMake] CPACK_MONOLITHIC_INSTALL not handled at runtime?

Eric Noulard eric.noulard at gmail.com
Sun Nov 14 15:43:06 EST 2010


2010/11/14 Vladislav Vaintroub <vvaintroub at googlemail.com>:
>
> [skip]
>> 1) Shall we step back and may be setup a CMake policy for
>>     enabling component installer?
>>     If we go for a policy may be someone can help me with this
>>     because I did never add a new policy mayself.
>
> Sounds like a good idea. On the other hand, just assuming CPACK_MONOLITHIC_INSTALL=1  by default for
> archives (ZIP, TGZ) and produce
> components only if explicitly  requested with CPACK_MONOLITHIC_INSTALL=0 would be fine with me.
> I imagine, this is what many users would want, but I might be mistaken.

Ok I think the idea is good but I propose some slightly more elaborate scheme.

Each CPackGenerator may support or not component install.
Now it's not because a generator is able to produce "componentized" package that
it should be it's default behavior (even if the user specified
COMPONENT in its CMakeLists.txt)

Thus for each generator which support component install there is an associated
default behavior which is to go either way.

If a user wants to enforce the non default behavior (either way) it may do so
by setting

CPACK_<GENERATOR>_MONOLITHIC_INSTALL
CPACK_<GENERATOR>_COMPONENT_INSTALL
or
CPACK_<GENERATOR>_INSTALL_BEHAVIOR=MONOLITHIC
CPACK_<GENERATOR>_INSTALL_BEHAVIOR=COMPONENT

we need both because default behavior for existing installer are
or will be differents (NSIS vs ZIP).


if ones want to GLOBALLY enforce either way then:

CPACK_MONOLITHIC_INSTALL
CPACK_COMPONENT_INSTALL
or
CPACK_INSTALL_BEHAVIOR=MONOLITHIC
CPACK_INSTALL_BEHAVIOR=COMPONENT
could be set.

Non component-aware generator will ignore those
(as of today).

Those vars may be set at CMake-time or at CPack-time.

What do you think?

I personnally think this scheme is relatively simple and robust
and it would be easy to maintain backward compatibility without
even have to introduce a new cmake policy.

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


More information about the CMake mailing list