[CMake] setting a default build type
Brandon J. Van Every
bvanevery at gmail.com
Thu Sep 7 13:52:29 EDT 2006
Alan W. Irwin wrote:
> On 2006-09-07 09:35-0700 Brandon J. Van Every wrote:
>> Alan W. Irwin wrote:
>>> On 2006-09-07 00:56-0700 Brandon J. Van Every wrote:
>>>> On MSVC my CMakeLists.txt generates Debug, Release, MinSizeRel, and
>>>> RelWithDebInfo build types. I want to keep all 4 of 'em. I want
>>>> to select MinSizeRel as the default build, so that if an end user
>>>> just fires up BUILD_ALL and does nothing else, he'll get a
>>>> MinSizeRel build. The default default is "Debug" and that's not
>>>> what I want.
>>>> So, is there a mechanism to specify the default build type? I was
>>>> unable to deduce it from the docs if there is one. Seems clear
>>>> enough how to ship *one* build type, I'd just do (SET
>>>> CMAKE_BUILD_TYPE MinSizeRel). But I want all 4 to be shipped.
>>> Its a cached variable. So I think what you want is
>>> SET (CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "Flags used by the
>>> during all build types.")
>>> That gives you the default you want plus the user should be able to
>>> that default with a -D option or appropriate GUI action.
>> I don't think this works for shipping 4 build types. I don't want
>> them, by default, to all behave as the same build type.
> Could you explain in more detail just what you mean by "shipping 4 build
> types"? (1) Is that giving the user the option of 4 different build
> types with a
> particular default?
Yes. What currently comes out of CMake in VS7.1 is 4 different build
types that the user can select, and the default is "Debug." If the user
does nothing but run BUILD_ALL, she'll get a debug build. We'd rather
it be a Release or MinSizeRel build.
> (2) Do you want to have the user build all 4 build types
> in the same CMake run?
The user can enable this from VS7.1 if they want to. They would select
"Batch Build." We're not interested in doing a batch build by default.
> The first interpretation of your request is easy to supply. CMake already
> allows the user to specify one of a list of build types. All the
> above SET
> command does is change the default build type (which is what you asked
> while still allowing the user to choose something different in ccmake (or
> whatever GUI front-end they use) if they prefer a build type that is
> different than the default MinSizeRel.
Ok I will try it and report back. I'm in the middle of tearing
something else up at this exact moment.
Brandon Van Every
More information about the CMake