[CMake] setting a default build type

Alan W. Irwin irwin at beluga.phys.uvic.ca
Thu Sep 7 13:18:50 EDT 2006


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 compiler
>> during all build types.")
>> 
>> That gives you the default you want plus the user should be able to 
>> override
>> 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?  (2) Do you want to have the user build all 4 build types
in the same CMake run? (3) Something else?

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 for)
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.

If you want your users to build all 4 build types in the same CMake
run, I don't quite see the point of that.   So maybe there is a third
interpretation of your request which I am missing?

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the Yorick front-end to PLplot (yplot.sf.net); the
Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__________________________

Linux-powered Science
__________________________


More information about the CMake mailing list