This seems to work for me: set(CMAKE_BUILD_TYPE_INIT RelWithDebInfo) -- Daniel Schepler ________________________________________ From: CMake [cmake-boun...@cmake.org] on behalf of Dan Kegel [d...@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_bara...@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 -- 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