AW: AW: [CMake] Overriding default values

Sören Freudiger muffmolch at gmx.de
Fri Sep 2 05:48:29 EDT 2005


yeah, nice thing to put this in a macro. but the scheme is the same.
Indeed

MACRO(ADD_CXX_FLAGS)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGN}")
  MESSAGE(${CMAKE_CXX_FLAGS})
ENDMACRO(ADD_CXX_FLAGS)

ADD_CXX_FLAGS("/wd4996")

this will lead to following problem:
first  CMake->configure: "/wd4996"
second CMake->configure: "/wd4996 /wd4996"
third  CMake->configure: "/wd4996 /wd4996 /wd4996"
...
and this macro has no effect to the cached value!

better:
MACRO(ADD_CXX_FLAGS)
  REMOVE(CMAKE_CXX_FLAGS ${ARGN})
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGN}" CACHE STRING "common C++
build flags" FORCE)  
ENDMACRO(ADD_CXX_FLAGS)

btw thanks for the tip "${CMAKE_CXX_FLAGS} ${ARGN}" this avoids the
semicolon problem ;-)

SirAnn

-----Ursprüngliche Nachricht-----
Von: cmake-bounces+muffmolch=gmx.de at cmake.org
[mailto:cmake-bounces+muffmolch=gmx.de at cmake.org] Im Auftrag von Filipe
Sousa
Gesendet: Freitag, 2. September 2005 11:27
An: cmake at cmake.org
Betreff: Re: AW: [CMake] Overriding default values

On Friday 02 September 2005 10:21, Sören Freudiger wrote:
> to add new flags is quite simple (e.g. /wd4996):
>
> #first remove existing flag (elsewise eachtime you'll configuring you 
> will add this option again) REMOVE(CMAKE_CXX_FLAGS "/wd4996") #then 
> add the "new option"
> SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "/wd4996") #last thing is 
> adding ";/wd4996" so you have to reomove the semicolon:
> STRING(REGEX REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") #or 
> by doing this REMOVE(CMAKE_CXX_FLAGS ";")
>
> #if you also want to change the cache variable:
> SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "common C++ 
> build flags" FORCE)
>
> if there's a better, shorter way, plaese let me know!

MACRO(ADD_CXX_FLAGS)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGN}")
ENDMACRO(ADD_CXX_FLAGS)

MACRO(ADD_C_FLAGS)
  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ARGN}")
ENDMACRO(ADD_C_FLAGS)

MACRO(ADD_C_FLAGS_IF condition)
  IF(${condition})
    ADD_C_FLAGS(${ARGN})
  ENDIF(${condition})
ENDMACRO(ADD_C_FLAGS_IF)

MACRO(ADD_CXX_FLAGS_IF condition)
  IF(${condition})
    ADD_CXX_FLAGS(${ARGN})
  ENDIF(${condition})
ENDMACRO(ADD_CXX_FLAGS_IF)

ADD_CXX_FLAGS("/wd4996")

ADD_CXX_FLAGS_IF(WIN32 "/wd4996")

> -----Ursprüngliche Nachricht-----
> Von: cmake-bounces+muffmolch=gmx.de at cmake.org
> [mailto:cmake-bounces+muffmolch=gmx.de at cmake.org] Im Auftrag von James 
> Bigler
> Gesendet: Donnerstag, 1. September 2005 23:25
> An: cmake at cmake.org
> Betreff: [CMake] Overriding default values
>
> CMake attempts to provide some values for the following variables:
>
> CMAKE_CXX_FLAGS
> CMAKE_CXX_FLAGS_DEBUG            -g
> CMAKE_CXX_FLAGS_MINSIZEREL       -O3
> CMAKE_CXX_FLAGS_RELEASE          -O2
> CMAKE_CXX_FLAGS_RELWITHDEBINFO   -O2
>
> How can I change the default and allow the user to make changes the 
> persists across configuation?
>
> Thanks,
> James
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
>
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake

--
Filipe Sousa



More information about the CMake mailing list