What is the default build type?

classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

What is the default build type?

Florian Lindner
Hello

ccmake shows CMAKE_BUILD_TYPE as unset. From the compile commands it looks like also nothing like Debug nor Release.

Why is there no well-defined default set? How can I set a default?

Thanks,
Florian
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

Michael Ellery


> On Jul 31, 2017, at 8:48 PM, Florian Lindner <[hidden email]> wrote:
>
> Hello
>
> ccmake shows CMAKE_BUILD_TYPE as unset. From the compile commands it looks like also nothing like Debug nor Release.
>
> Why is there no well-defined default set? How can I set a default?
>
> Thanks,
> Florian
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake


my recollection is that an unspecified build type results in a build that has no optimizations and no debug symbols generated. I’m not sure what the motivation for those default flags is. If you want to default to DEBUG, something like this should work:

    if (NOT CMAKE_BUILD_TYPE)
      set(CMAKE_BUILD_TYPE Debug)
    endif()


-MIke

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

J Decker
I like having something like this.... defines CMAKE_BUILD_TYPE to be a droplist of choices...

----

if( NOT CMAKE_CONFIGURATION_TYPES )
set( CMAKE_CONFIGURATION_TYPES debug release )
endif( NOT CMAKE_CONFIGURATION_TYPES )

set( CMAKE_BUILD_TYPE release CACHE STRING "Cached cmake build type"  )
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )


-----

On Mon, Jul 31, 2017 at 9:28 PM, Michael Ellery <[hidden email]> wrote:


> On Jul 31, 2017, at 8:48 PM, Florian Lindner <[hidden email]> wrote:
>
> Hello
>
> ccmake shows CMAKE_BUILD_TYPE as unset. From the compile commands it looks like also nothing like Debug nor Release.
>
> Why is there no well-defined default set? How can I set a default?
>
> Thanks,
> Florian
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake


my recollection is that an unspecified build type results in a build that has no optimizations and no debug symbols generated. I’m not sure what the motivation for those default flags is. If you want to default to DEBUG, something like this should work:

    if (NOT CMAKE_BUILD_TYPE)
      set(CMAKE_BUILD_TYPE Debug)
    endif()


-MIke

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

Florian Lindner
Hi,

Am 01.08.2017 um 16:59 schrieb J Decker:

> I like having something like this.... defines CMAKE_BUILD_TYPE to be a droplist of choices...
>
> ----
>
> if( NOT CMAKE_CONFIGURATION_TYPES )
> set( CMAKE_CONFIGURATION_TYPES debug release )
> endif( NOT CMAKE_CONFIGURATION_TYPES )
>
> set( CMAKE_BUILD_TYPE release CACHE STRING "Cached cmake build type"  )
> set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )

The droplist is really cool! Can't understand why it's not the default this way.

https://cmake.org/cmake/help/v3.0/variable/CMAKE_CONFIGURATION_TYPES.html says "This has reasonable defaults on most
platforms...", but when I message(${CMAKE_CONFIGURATION_TYPES}) it is empty. Why that?

That code also does not seem to set the default:

if(NOT CMAKE_CONFIGURATION_TYPES)
  set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo)
endif()

set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build Type")
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )

So the first commands set the cached value of the string "Build type". The second commands sets the property STRINGS of
the variable CMAKE_BUILD_TYPE. Is that correct?


# if (NOT CMAKE_BUILD_TYPE)
#   set(CMAKE_BUILD_TYPE Debug)

Uncommenting this sets the default non builds with cmake, but not on ccmake (at least not in the GUI).

# endif()
message(STATUS "Build configuration: " ${CMAKE_BUILD_TYPE})


Best Thanks,
Florian

>
>
> -----
>
> https://cmake.org/cmake/help/v3.0/variable/CMAKE_CONFIGURATION_TYPES.html
>
> On Mon, Jul 31, 2017 at 9:28 PM, Michael Ellery <[hidden email] <mailto:[hidden email]>> wrote:
>
>
>
>     > On Jul 31, 2017, at 8:48 PM, Florian Lindner <[hidden email] <mailto:[hidden email]>> wrote:
>     >
>     > Hello
>     >
>     > ccmake shows CMAKE_BUILD_TYPE as unset. From the compile commands it looks like also nothing like Debug nor Release.
>     >
>     > Why is there no well-defined default set? How can I set a default?
>     >
>     > Thanks,
>     > Florian
>     > --
>     >
>     > Powered by www.kitware.com <http://www.kitware.com>
>     >
>     > Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>     <http://www.cmake.org/Wiki/CMake_FAQ>
>     >
>     > Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>     >
>     > CMake Support: http://cmake.org/cmake/help/support.html <http://cmake.org/cmake/help/support.html>
>     > CMake Consulting: http://cmake.org/cmake/help/consulting.html <http://cmake.org/cmake/help/consulting.html>
>     > CMake Training Courses: http://cmake.org/cmake/help/training.html <http://cmake.org/cmake/help/training.html>
>     >
>     > Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>     <http://www.kitware.com/opensource/opensource.html>
>     >
>     > Follow this link to subscribe/unsubscribe:
>     > http://public.kitware.com/mailman/listinfo/cmake <http://public.kitware.com/mailman/listinfo/cmake>
>
>
>     my recollection is that an unspecified build type results in a build that has no optimizations and no debug symbols
>     generated. I’m not sure what the motivation for those default flags is. If you want to default to DEBUG, something
>     like this should work:
>
>         if (NOT CMAKE_BUILD_TYPE)
>           set(CMAKE_BUILD_TYPE Debug)
>         endif()
>
>
>     -MIke
>
>     --
>
>     Powered by www.kitware.com <http://www.kitware.com>
>
>     Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>     <http://www.cmake.org/Wiki/CMake_FAQ>
>
>     Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
>     CMake Support: http://cmake.org/cmake/help/support.html <http://cmake.org/cmake/help/support.html>
>     CMake Consulting: http://cmake.org/cmake/help/consulting.html <http://cmake.org/cmake/help/consulting.html>
>     CMake Training Courses: http://cmake.org/cmake/help/training.html <http://cmake.org/cmake/help/training.html>
>
>     Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>     <http://www.kitware.com/opensource/opensource.html>
>
>     Follow this link to subscribe/unsubscribe:
>     http://public.kitware.com/mailman/listinfo/cmake <http://public.kitware.com/mailman/listinfo/cmake>
>
>
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

Bo Zhou
It depends on the Generator.

To the Makefile, the actual type was controlled by the compiler options. If you don't specific any type, usually it means non-debug and non-optimization because the CMAKE_CXX_FLAGS is empty as default. This is critical, so usually people should specific the actual type they want to build.

To the generator of the IDE, such as Visual Studio and Xcode, the CMAKE_BUILD_TYPE doesn't make sense but we have to use CMAKE_CONFIGURATION_TYPES, then CMake will create the several configuration sets for the IDE from the CMAKE_C|CXX_FLAGS_{CONFIG} .

On Wed, Aug 2, 2017 at 1:57 PM, Florian Lindner <[hidden email]> wrote:
Hi,

Am 01.08.2017 um 16:59 schrieb J Decker:
> I like having something like this.... defines CMAKE_BUILD_TYPE to be a droplist of choices...
>
> ----
>
> if( NOT CMAKE_CONFIGURATION_TYPES )
> set( CMAKE_CONFIGURATION_TYPES debug release )
> endif( NOT CMAKE_CONFIGURATION_TYPES )
>
> set( CMAKE_BUILD_TYPE release CACHE STRING "Cached cmake build type"  )
> set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )

The droplist is really cool! Can't understand why it's not the default this way.

https://cmake.org/cmake/help/v3.0/variable/CMAKE_CONFIGURATION_TYPES.html says "This has reasonable defaults on most
platforms...", but when I message(${CMAKE_CONFIGURATION_TYPES}) it is empty. Why that?

That code also does not seem to set the default:

if(NOT CMAKE_CONFIGURATION_TYPES)
  set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo)
endif()

set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build Type")
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )

So the first commands set the cached value of the string "Build type". The second commands sets the property STRINGS of
the variable CMAKE_BUILD_TYPE. Is that correct?


# if (NOT CMAKE_BUILD_TYPE)
#   set(CMAKE_BUILD_TYPE Debug)

Uncommenting this sets the default non builds with cmake, but not on ccmake (at least not in the GUI).

# endif()
message(STATUS "Build configuration: " ${CMAKE_BUILD_TYPE})


Best Thanks,
Florian

>
>
> -----
>
> https://cmake.org/cmake/help/v3.0/variable/CMAKE_CONFIGURATION_TYPES.html
>
> On Mon, Jul 31, 2017 at 9:28 PM, Michael Ellery <[hidden email] <mailto:[hidden email]>> wrote:
>
>
>
>     > On Jul 31, 2017, at 8:48 PM, Florian Lindner <[hidden email] <mailto:[hidden email]>> wrote:
>     >
>     > Hello
>     >
>     > ccmake shows CMAKE_BUILD_TYPE as unset. From the compile commands it looks like also nothing like Debug nor Release.
>     >
>     > Why is there no well-defined default set? How can I set a default?
>     >
>     > Thanks,
>     > Florian
>     > --
>     >
>     > Powered by www.kitware.com <http://www.kitware.com>
>     >
>     > Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>     <http://www.cmake.org/Wiki/CMake_FAQ>
>     >
>     > Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>     >
>     > CMake Support: http://cmake.org/cmake/help/support.html <http://cmake.org/cmake/help/support.html>
>     > CMake Consulting: http://cmake.org/cmake/help/consulting.html <http://cmake.org/cmake/help/consulting.html>
>     > CMake Training Courses: http://cmake.org/cmake/help/training.html <http://cmake.org/cmake/help/training.html>
>     >
>     > Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>     <http://www.kitware.com/opensource/opensource.html>
>     >
>     > Follow this link to subscribe/unsubscribe:
>     > http://public.kitware.com/mailman/listinfo/cmake <http://public.kitware.com/mailman/listinfo/cmake>
>
>
>     my recollection is that an unspecified build type results in a build that has no optimizations and no debug symbols
>     generated. I’m not sure what the motivation for those default flags is. If you want to default to DEBUG, something
>     like this should work:
>
>         if (NOT CMAKE_BUILD_TYPE)
>           set(CMAKE_BUILD_TYPE Debug)
>         endif()
>
>
>     -MIke
>
>     --
>
>     Powered by www.kitware.com <http://www.kitware.com>
>
>     Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>     <http://www.cmake.org/Wiki/CMake_FAQ>
>
>     Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
>     CMake Support: http://cmake.org/cmake/help/support.html <http://cmake.org/cmake/help/support.html>
>     CMake Consulting: http://cmake.org/cmake/help/consulting.html <http://cmake.org/cmake/help/consulting.html>
>     CMake Training Courses: http://cmake.org/cmake/help/training.html <http://cmake.org/cmake/help/training.html>
>
>     Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>     <http://www.kitware.com/opensource/opensource.html>
>
>     Follow this link to subscribe/unsubscribe:
>     http://public.kitware.com/mailman/listinfo/cmake <http://public.kitware.com/mailman/listinfo/cmake>
>
>
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

Marcus D. Hanwell-2
On Wed, Aug 2, 2017 at 3:03 AM, Bo Zhou <[hidden email]> wrote:
It depends on the Generator.

To the Makefile, the actual type was controlled by the compiler options. If you don't specific any type, usually it means non-debug and non-optimization because the CMAKE_CXX_FLAGS is empty as default. This is critical, so usually people should specific the actual type they want to build.

To the generator of the IDE, such as Visual Studio and Xcode, the CMAKE_BUILD_TYPE doesn't make sense but we have to use CMAKE_CONFIGURATION_TYPES, then CMake will create the several configuration sets for the IDE from the CMAKE_C|CXX_FLAGS_{CONFIG} .

This thread inspired me to write up how we have been doing it in some of the projects I work on for quite a while now,


It certainly isn't the only way, but it provides an easy path to ensure things show up in the GUIs, respect build types passed in, etc. 

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

CMake mailing list
Very cool, Marcus. Thanks for the blog post.

Florian, when you "message(${CMAKE_CONFIGURATION_TYPES})" it is empty
because you are using a single-configuration CMake generator. Only
Visual Studio and Xcode (and possibly other) **multi** config
generators have a list of values in CMAKE_CONFIGURATION_TYPES.
Contrary to the previous recommendation, I would NOT recommend setting
it to a list in a single configuration generator. If you're using a
multi-config generator, you can set up a subset for it to use with
this, but in a single config generator, this variable SHOULD be empty,
and you should not give it contents in that case.


HTH,
David C.



On Wed, Aug 2, 2017 at 11:55 AM, Marcus D. Hanwell
<[hidden email]> wrote:

> On Wed, Aug 2, 2017 at 3:03 AM, Bo Zhou <[hidden email]> wrote:
>>
>> It depends on the Generator.
>>
>> To the Makefile, the actual type was controlled by the compiler options.
>> If you don't specific any type, usually it means non-debug and
>> non-optimization because the CMAKE_CXX_FLAGS is empty as default. This is
>> critical, so usually people should specific the actual type they want to
>> build.
>>
>> To the generator of the IDE, such as Visual Studio and Xcode, the
>> CMAKE_BUILD_TYPE doesn't make sense but we have to use
>> CMAKE_CONFIGURATION_TYPES, then CMake will create the several configuration
>> sets for the IDE from the CMAKE_C|CXX_FLAGS_{CONFIG} .
>
>
> This thread inspired me to write up how we have been doing it in some of the
> projects I work on for quite a while now,
>
> https://blog.kitware.com/cmake-and-the-default-build-type/
>
> It certainly isn't the only way, but it provides an easy path to ensure
> things show up in the GUIs, respect build types passed in, etc.
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

Marcus D. Hanwell-2
On Wed, Aug 2, 2017 at 1:32 PM, David Cole <[hidden email]> wrote:

>
> Very cool, Marcus. Thanks for the blog post.
>
> Florian, when you "message(${CMAKE_CONFIGURATION_TYPES})" it is empty
> because you are using a single-configuration CMake generator. Only
> Visual Studio and Xcode (and possibly other) **multi** config
> generators have a list of values in CMAKE_CONFIGURATION_TYPES.
> Contrary to the previous recommendation, I would NOT recommend setting
> it to a list in a single configuration generator. If you're using a
> multi-config generator, you can set up a subset for it to use with
> this, but in a single config generator, this variable SHOULD be empty,
> and you should not give it contents in that case.
>
Why you would not recommend setting it to a list for a single
configuration generator.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

Marcus D. Hanwell-2
In reply to this post by CMake mailing list
On Wed, Aug 2, 2017 at 1:32 PM, David Cole <[hidden email]> wrote:

> Very cool, Marcus. Thanks for the blog post.
>
> Florian, when you "message(${CMAKE_CONFIGURATION_TYPES})" it is empty
> because you are using a single-configuration CMake generator. Only
> Visual Studio and Xcode (and possibly other) **multi** config
> generators have a list of values in CMAKE_CONFIGURATION_TYPES.
> Contrary to the previous recommendation, I would NOT recommend setting
> it to a list in a single configuration generator. If you're using a
> multi-config generator, you can set up a subset for it to use with
> this, but in a single config generator, this variable SHOULD be empty,
> and you should not give it contents in that case.
>
Terrible English, try number two... Why would you not recommend
setting it, and what do you mean by it? I was not setting
CMAKE_CONFIGURATION_TYPES to anything, but the CMAKE_BUILD_TYPE
property is manipulated to offer the list, and then the
CMAKE_BUILD_TYPE variable is populated if it is empty in my example.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

CMake mailing list
Yes, your code is a good example Marcus. It was one of the previous
suggestions on this thread which had example code setting
CMAKE_CONFIGURATION_TYPES.

I would recommend against setting this variable because in some places
in CMake code, it is used as an approximate proxy for whether or not a
multi-configuration generator is being used.


For a few examples, see the CMake code base itself:

$ git grep CMAKE_CONFIGURATION_TYPES | grep -Ev
"Auxiliary/vim/syntax/cmake.vim|Help/|Tests/"

CMakeCPack.cmake:  if(CMAKE_CONFIGURATION_TYPES)
Modules/CMakeExpandImportedTargets.cmake:#
${CMAKE_CONFIGURATION_TYPES} if set, otherwise ${CMAKE_BUILD_TYPE}.
Modules/CMakeExpandImportedTargets.cmake:      if(CMAKE_CONFIGURATION_TYPES)
Modules/CMakeExpandImportedTargets.cmake:         list(GET
CMAKE_CONFIGURATION_TYPES 0 CEIT_CONFIGURATION)
Modules/CTestTargets.cmake:if(CMAKE_CONFIGURATION_TYPES)
Modules/DeployQt4.cmake:                        if(configurations AND
(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE))
Modules/DeployQt4.cmake:                if(CMAKE_CONFIGURATION_TYPES
OR CMAKE_BUILD_TYPE)
Modules/ExternalProject.cmake:      if(CMAKE_CONFIGURATION_TYPES)
Modules/ExternalProject.cmake:        if(CMAKE_CONFIGURATION_TYPES)
Modules/ExternalProject.cmake:  if(CMAKE_CONFIGURATION_TYPES)
Modules/ExternalProject.cmake:    if(CMAKE_CONFIGURATION_TYPES)
Modules/ExternalProject.cmake:      foreach(cfg ${CMAKE_CONFIGURATION_TYPES})
Modules/FindBoost.cmake:      if(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
Modules/FindCUDA.cmake:# Makefile and similar generators don't define
CMAKE_CONFIGURATION_TYPES, so we
Modules/FindCUDA.cmake:set(CUDA_configuration_types
${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE} Debug MinSizeRel
Release RelWithDebInfo)
Modules/FindQt4.cmake:        if (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
Modules/SelectLibraryConfigurations.cmake:           (
CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) )
Source/cmGlobalVisualStudio7Generator.cxx:  if
(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
Source/cmGlobalVisualStudio7Generator.cxx:
"CMAKE_CONFIGURATION_TYPES",
"Debug;Release;MinSizeRel;RelWithDebInfo",
Source/cmGlobalXCodeGenerator.cxx:  if
(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
Source/cmGlobalXCodeGenerator.cxx:      "CMAKE_CONFIGURATION_TYPES",
"Debug;Release;MinSizeRel;RelWithDebInfo",
Source/cmGlobalXCodeGenerator.cxx:
this->CurrentMakefile->GetRequiredDefinition("CMAKE_CONFIGURATION_TYPES");
Source/cmMakefile.cxx:
this->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
Utilities/Release/WiX/CMakeLists.txt:if(CMAKE_CONFIGURATION_TYPES)





On Wed, Aug 2, 2017 at 2:42 PM, Marcus D. Hanwell
<[hidden email]> wrote:

> On Wed, Aug 2, 2017 at 1:32 PM, David Cole <[hidden email]> wrote:
>> Very cool, Marcus. Thanks for the blog post.
>>
>> Florian, when you "message(${CMAKE_CONFIGURATION_TYPES})" it is empty
>> because you are using a single-configuration CMake generator. Only
>> Visual Studio and Xcode (and possibly other) **multi** config
>> generators have a list of values in CMAKE_CONFIGURATION_TYPES.
>> Contrary to the previous recommendation, I would NOT recommend setting
>> it to a list in a single configuration generator. If you're using a
>> multi-config generator, you can set up a subset for it to use with
>> this, but in a single config generator, this variable SHOULD be empty,
>> and you should not give it contents in that case.
>>
> Terrible English, try number two... Why would you not recommend
> setting it, and what do you mean by it? I was not setting
> CMAKE_CONFIGURATION_TYPES to anything, but the CMAKE_BUILD_TYPE
> property is manipulated to offer the list, and then the
> CMAKE_BUILD_TYPE variable is populated if it is empty in my example.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

Marcus D. Hanwell-2
On Wed, Aug 2, 2017 at 2:50 PM, David Cole <[hidden email]> wrote:
> Yes, your code is a good example Marcus. It was one of the previous
> suggestions on this thread which had example code setting
> CMAKE_CONFIGURATION_TYPES.
>
> I would recommend against setting this variable because in some places
> in CMake code, it is used as an approximate proxy for whether or not a
> multi-configuration generator is being used.
>
Ah, thanks for clearing that up, it was unclear if there were issues
you spotted with what I posted, now I reread it I see. I thought I had
been pretty careful not to pollute variables meant for
multi-configuration generators :-) I may have even asked you about
this many moons ago, and possibly got the enum-style list from
something you posted.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

J Decker
In reply to this post by CMake mailing list


On Wed, Aug 2, 2017 at 11:50 AM, David Cole via CMake <[hidden email]> wrote:
Yes, your code is a good example Marcus. It was one of the previous
suggestions on this thread which had example code setting
CMAKE_CONFIGURATION_TYPES.

I would recommend against setting this variable because in some places
in CMake code, it is used as an approximate proxy for whether or not a
multi-configuration generator is being used.


For a few examples, see the CMake code base itself:

MinGW Makefiles supports multiple configurations; one at a time.  And reading a few of these...
 
$ git grep CMAKE_CONFIGURATION_TYPES | grep -Ev
"Auxiliary/vim/syntax/cmake.vim|Help/|Tests/"
CMakeCPack.cmake:  if(CMAKE_CONFIGURATION_TYPES)
this one is not distributed, and I don't have it.
 
Modules/CMakeExpandImportedTargets.cmake:#
${CMAKE_CONFIGURATION_TYPES} if set, otherwise ${CMAKE_BUILD_TYPE}.
Modules/CMakeExpandImportedTargets.cmake:      if(CMAKE_CONFIGURATION_TYPES)
Modules/CMakeExpandImportedTargets.cmake:         list(GET
CMAKE_CONFIGURATION_TYPES 0 CEIT_CONFIGURATION)

the whole point is to get a good setting list for CMAKE_BUILD TYPE so this is harmless because built type will override the default behavior...
# CONFIGURATION is given, it uses the first configuration from
# ${CMAKE_CONFIGURATION_TYPES} if set, otherwise ${CMAKE_BUILD_TYPE}.

 
Modules/CTestTargets.cmake:if(CMAKE_CONFIGURATION_TYPES)

I would want this to pass CONFIGURATION_TYPES to included external projects because it's missing otherwise anyway.
 
Modules/DeployQt4.cmake:                        if(configurations AND
(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE))
Modules/DeployQt4.cmake:                if(CMAKE_CONFIGURATION_TYPES
OR CMAKE_BUILD_TYPE)

This is used to use the argument passed to the macro if CMAKE_BUILD_TYPE (this is what we want set anyway) OR CMAKE_CONFIGUATION_TYPES is set.
 
Modules/ExternalProject.cmake:      if(CMAKE_CONFIGURATION_TYPES)
Modules/ExternalProject.cmake:        if(CMAKE_CONFIGURATION_TYPES)
Modules/ExternalProject.cmake:  if(CMAKE_CONFIGURATION_TYPES)
Modules/ExternalProject.cmake:    if(CMAKE_CONFIGURATION_TYPES)
Modules/ExternalProject.cmake:      foreach(cfg ${CMAKE_CONFIGURATION_TYPES})

In these cases, it makes sure to pass the build configuration passed from the core project, otherwise it leaves it blank.  Since I want to specify the build configuration anyway, this should always be set if externalproject is  used.
 
Modules/FindBoost.cmake:      if(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)

if neither of these are set it sets release output.  and we're trying to make sure that CMAKE_BUILD_TYPE is set to something not blank anyway.
 
Modules/FindCUDA.cmake:# Makefile and similar generators don't define
CMAKE_CONFIGURATION_TYPES, so we
Modules/FindCUDA.cmake:set(CUDA_configuration_types
${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE} Debug MinSizeRel
Release RelWithDebInfo)

This one includes already set configuration types, and add capitalized versions; then builds a list and removes duplicate because it sets all configurations to UPPER(); so this is harmless.  and is a better implementation than the below SelectLibraryConfigurations.cmake:   

(comment block in FindCUDA)
# Makefile and similar generators don't define CMAKE_CONFIGURATION_TYPES, so we
# need to add another entry for the CMAKE_BUILD_TYPE.  We also need to add the
# standerd set of 4 build types (Debug, MinSizeRel, Release, and RelWithDebInfo)
# for completeness.  We need run this loop in order to accomodate the addition
# of extra configuration types.  Duplicate entries will be removed by
# REMOVE_DUPLICATES.

...and yet they[makefile and similar] should have configuration types; because they can build all of those configurations.


 
Modules/FindQt4.cmake:        if (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)


again- cmake_build_type is being set, so don't default to Release

 
Modules/SelectLibraryConfigurations.cmake:           (
CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) )

Would be triggered because we're setting CMAKE_BUILD_TYPE anyway..; and also does not support minreldebinfo or MinSizeRel; and instead only checks _DEBUG and _RELEASE targets.

 
Source/cmGlobalVisualStudio7Generator.cxx:  if
(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
Source/cmGlobalVisualStudio7Generator.cxx:
"CMAKE_CONFIGURATION_TYPES",
"Debug;Release;MinSizeRel;RelWithDebInfo",
Source/cmGlobalXCodeGenerator.cxx:  if
(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
Source/cmGlobalXCodeGenerator.cxx:      "CMAKE_CONFIGURATION_TYPES",
"Debug;Release;MinSizeRel;RelWithDebInfo",
Source/cmGlobalXCodeGenerator.cxx:
this->CurrentMakefile->GetRequiredDefinition("CMAKE_CONFIGURATION_TYPES");
Source/cmMakefile.cxx:
this->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
Utilities/Release/WiX/CMakeLists.txt:if(CMAKE_CONFIGURATION_TYPES)

These would be used, and would set cmake_configuration_types so we don't have to; they set it, not use it.


So, all in all, it looks like it is either indifferent to being set, or SHOULD be set to make sure configuration types are propagate (externalProject).  


I asked a LONG time ago why this wasn't set by default anyway, and was told 'because makefiles'... and yet I built all sortf of projects using makefile generators and found that I HAD to get this set anyway because I was building Debug and Release modes continuously there (one so I could debug, the other so I could test optimal); otherwise the output behavior was inconsistent and would overlap release and debug configuration builds.  I subsequently fixed THAT by making sure to build in .../build/debug_projects and output to ../build/debug_out (install target) and ..../build/release_projects and .../build/release_out so iteritive building wouldn't get mixed debug and release objects trying to build into a library/executable.






On Wed, Aug 2, 2017 at 2:42 PM, Marcus D. Hanwell
<[hidden email]> wrote:
> On Wed, Aug 2, 2017 at 1:32 PM, David Cole <[hidden email]> wrote:
>> Very cool, Marcus. Thanks for the blog post.
>>
>> Florian, when you "message(${CMAKE_CONFIGURATION_TYPES})" it is empty
>> because you are using a single-configuration CMake generator. Only
>> Visual Studio and Xcode (and possibly other) **multi** config
>> generators have a list of values in CMAKE_CONFIGURATION_TYPES.
>> Contrary to the previous recommendation, I would NOT recommend setting
>> it to a list in a single configuration generator. If you're using a
>> multi-config generator, you can set up a subset for it to use with
>> this, but in a single config generator, this variable SHOULD be empty,
>> and you should not give it contents in that case.
>>
> Terrible English, try number two... Why would you not recommend
> setting it, and what do you mean by it? I was not setting
> CMAKE_CONFIGURATION_TYPES to anything, but the CMAKE_BUILD_TYPE
> property is manipulated to offer the list, and then the
> CMAKE_BUILD_TYPE variable is populated if it is empty in my example.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

J Decker
In reply to this post by Marcus D. Hanwell-2

On Wed, Aug 2, 2017 at 8:55 AM, Marcus D. Hanwell <[hidden email]> wrote:
On Wed, Aug 2, 2017 at 3:03 AM, Bo Zhou <[hidden email]> wrote:
It depends on the Generator.

To the Makefile, the actual type was controlled by the compiler options. If you don't specific any type, usually it means non-debug and non-optimization because the CMAKE_CXX_FLAGS is empty as default. This is critical, so usually people should specific the actual type they want to build.

To the generator of the IDE, such as Visual Studio and Xcode, the CMAKE_BUILD_TYPE doesn't make sense but we have to use CMAKE_CONFIGURATION_TYPES, then CMake will create the several configuration sets for the IDE from the CMAKE_C|CXX_FLAGS_{CONFIG} .

This thread inspired me to write up how we have been doing it in some of the projects I work on for quite a while now,



These should use lower case 'debug' 'release' etc.  Because if it's not VS, it's probably also not windows, and case matters. 
 
It certainly isn't the only way, but it provides an easy path to ensure things show up in the GUIs, respect build types passed in, etc. 

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

Marcus D. Hanwell-2
On Wed, Aug 2, 2017 at 4:18 PM, J Decker <[hidden email]> wrote:

>
> On Wed, Aug 2, 2017 at 8:55 AM, Marcus D. Hanwell <[hidden email]> wrote:
>>
>> On Wed, Aug 2, 2017 at 3:03 AM, Bo Zhou <[hidden email]> wrote:
>>>
>>> It depends on the Generator.
>>>
>>> To the Makefile, the actual type was controlled by the compiler options. If you don't specific any type, usually it means non-debug and non-optimization because the CMAKE_CXX_FLAGS is empty as default. This is critical, so usually people should specific the actual type they want to build.
>>>
>>> To the generator of the IDE, such as Visual Studio and Xcode, the CMAKE_BUILD_TYPE doesn't make sense but we have to use CMAKE_CONFIGURATION_TYPES, then CMake will create the several configuration sets for the IDE from the CMAKE_C|CXX_FLAGS_{CONFIG} .
>>
>>
>> This thread inspired me to write up how we have been doing it in some of the projects I work on for quite a while now,
>>
>> https://blog.kitware.com/cmake-and-the-default-build-type/
>>
> These should use lower case 'debug' 'release' etc.  Because if it's not VS, it's probably also not windows, and case matters.
>
No, camel case works just fine. I took a quick look and lowercase will
work, as well as all caps. I have used this for many years on Linux
builds with Makefile/Ninja without issue.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: What is the default build type?

Mueller-Roemer, Johannes Sebastian
Exactly. Also, CMAKE_CONFIGURATION_TYPES uses the CamelCase Versions by default, so if your CMake code breaks with that spelling, your CMakeLists.txt can be considered broken anyways...

Fraunhofer-Institut für Graphische Datenverarbeitung IGD
Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
Tel +49 6151 155-606  |  Fax +49 6151 155-139
[hidden email] | www.igd.fraunhofer.de


-----Original Message-----
From: CMake [mailto:[hidden email]] On Behalf Of Marcus D. Hanwell
Sent: Thursday, August 3, 2017 16:25
To: J Decker <[hidden email]>
Cc: [hidden email]
Subject: Re: [CMake] What is the default build type?

On Wed, Aug 2, 2017 at 4:18 PM, J Decker <[hidden email]> wrote:

>
> On Wed, Aug 2, 2017 at 8:55 AM, Marcus D. Hanwell <[hidden email]> wrote:
>>
>> On Wed, Aug 2, 2017 at 3:03 AM, Bo Zhou <[hidden email]> wrote:
>>>
>>> It depends on the Generator.
>>>
>>> To the Makefile, the actual type was controlled by the compiler options. If you don't specific any type, usually it means non-debug and non-optimization because the CMAKE_CXX_FLAGS is empty as default. This is critical, so usually people should specific the actual type they want to build.
>>>
>>> To the generator of the IDE, such as Visual Studio and Xcode, the CMAKE_BUILD_TYPE doesn't make sense but we have to use CMAKE_CONFIGURATION_TYPES, then CMake will create the several configuration sets for the IDE from the CMAKE_C|CXX_FLAGS_{CONFIG} .
>>
>>
>> This thread inspired me to write up how we have been doing it in some
>> of the projects I work on for quite a while now,
>>
>> https://blog.kitware.com/cmake-and-the-default-build-type/
>>
> These should use lower case 'debug' 'release' etc.  Because if it's not VS, it's probably also not windows, and case matters.
>
No, camel case works just fine. I took a quick look and lowercase will work, as well as all caps. I have used this for many years on Linux builds with Makefile/Ninja without issue.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake