[CMake] [cmake-developers] CMake IR

Daniel Schepler dschepler at scalable-networks.com
Fri Jul 31 12:44:27 EDT 2015


This seems to work for me:
set(CMAKE_BUILD_TYPE_INIT RelWithDebInfo)
-- 
Daniel Schepler
________________________________________
From: CMake [cmake-bounces at cmake.org] on behalf of Dan Kegel [dank at kegel.com]
Sent: Friday, July 31, 2015 9:38 AM
To: Ruslan Baratov
Cc: cmake; Bill Hoffman
Subject: Re: [CMake] [cmake-developers] CMake IR

On Fri, Jul 31, 2015 at 11:33 AM, Ruslan Baratov
<ruslan_baratov at yahoo.com> wrote:
>>> I never use the GUI, and consider the cache an anti-feature there solely
>>> to support GUI users.  It complicates my life, and I'd love to see it go.
>>
>> In what way do you think it is causing you trouble?
>
> Here is an example:
>
>     # CMakeLists.txt
>     cmake_minimum_required(VERSION 3.0)
>     project(Foo)
>
>     if(A)
>       set(B "Hello A" CACHE STRING "Do we use A?")
>     else()
>       set(B "There is no A" CACHE STRING "Do we use A?")
>     endif()
>
> User thinks: okay, if I set A=ON I will have B equal to "Hello A".
>
> What user really have:
>
>     > rm -rf _builds
>     > cmake -H. -B_builds
>     > cmake -H. -B_builds -DA=ON
>     > grep '\<B\>' _builds/CMakeCache.txt
>     B:STRING=There is no A
>
> I'm not saying cache is a bad idea, I'm just saying that when users hit such
> kind of situations that's one of the reason why they said CMake is not a
> good script language. Just like CMake before CMP0054: user see `if("a"
> STREQUAL "b")` and think "okay, 'a' is not equal to 'b' so this condition is
> always false"... nope!

Here's another example from real life.  Maybe I'm just being an idiot,
but this is what I had to do to set a default:

IF(DEFINED CMAKE_BUILD_TYPE AND (NOT ${CMAKE_BUILD_TYPE} STREQUAL "None"))
   SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose the
type of build, options are: Debug Release RelWithDebInfo")
ELSE()
   SET(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type
of build, options are: Debug Release RelWithDebInfo" FORCE)
ENDIF()

Can someone give me the proper one-line way to set a default for
CMAKE_BUILD_TYPE, or is this an authentic problem?
- Dan
--

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



More information about the CMake mailing list