Re: [CMake] Replace default "make all" with "make help"

2017-08-02 Thread J Decker
On Wed, Aug 2, 2017 at 8:12 AM, DKLind  wrote:

> Is it possible to replace the default target of the "Unix Makefiles"
> generated Makefile of 'all' with 'help'? By default, I mean when no target
> is specified when invoking 'make', the 'all' target is assumed.


Because cmake works with so many targets, it's unlikely this would be of
much use; ninja itself has ability to specify default target, but that's
not available from CMake; also generators like Visual Studio, et al.  don't
have 'all' they have ALL_BUILD and no 'help' target.

https://cmake.org/cmake/help/v3.0/command/build_command.html
I suppose you could wrap your CMakeLists in another that checks $
and if not set, then trigger cmake --build with --target help

that's probably a really bad idea in general though.

If someone is using cmake to build though; one would think they would just
'know' that make help is a thing to do...

Or - why would you want your one project to behave any different than all
the others in the world? (or perhaps a nicer phrasing)  Why do you want to
do this?


>
> --
> View this message in context: Replace default "make all" with "make help"
> 
> Sent from the CMake mailing list archive
>  at Nabble.com.
>
> --
>
> 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

Re: [CMake] What is the default build type?

2017-08-02 Thread J Decker
On Wed, Aug 2, 2017 at 8:55 AM, Marcus D. Hanwell <
marcus.hanw...@kitware.com> wrote:

> On Wed, Aug 2, 2017 at 3:03 AM, Bo Zhou  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.


> 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

Re: [CMake] What is the default build type?

2017-08-02 Thread J Decker
On Wed, Aug 2, 2017 at 11:50 AM, David Cole via CMake 
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 

Re: [CMake] What is the default build type?

2017-08-02 Thread Marcus D. Hanwell
On Wed, Aug 2, 2017 at 2:50 PM, David Cole  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


Re: [CMake] What is the default build type?

2017-08-02 Thread David Cole via CMake
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
 wrote:
> On Wed, Aug 2, 2017 at 1:32 PM, David Cole  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


Re: [CMake] What is the default build type?

2017-08-02 Thread Marcus D. Hanwell
On Wed, Aug 2, 2017 at 1:32 PM, David Cole  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


Re: [CMake] What is the default build type?

2017-08-02 Thread Marcus D. Hanwell
On Wed, Aug 2, 2017 at 1:32 PM, David Cole  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


Re: [CMake] What is the default build type?

2017-08-02 Thread David Cole via CMake
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
 wrote:
> On Wed, Aug 2, 2017 at 3:03 AM, Bo Zhou  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


Re: [CMake] What is the default build type?

2017-08-02 Thread Marcus D. Hanwell
On Wed, Aug 2, 2017 at 3:03 AM, Bo Zhou  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

[CMake] Replace default "make all" with "make help"

2017-08-02 Thread DKLind
Is it possible to replace the default target of the "Unix Makefiles"
generated Makefile of 'all' with 'help'? By default, I mean when no target
is specified when invoking 'make', the 'all' target is assumed.



--
View this message in context: 
http://cmake.3232098.n2.nabble.com/Replace-default-make-all-with-make-help-tp7595988.html
Sent from the CMake mailing list archive at Nabble.com.-- 

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

Re: [CMake] What is the default build type?

2017-08-02 Thread 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  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  > wrote:
> >
> >
> >
> > > On Jul 31, 2017, at 8:48 PM, Florian Lindner  > 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 <
> 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
> 
> > >
> > > 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 <
> 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 <
> 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/t