AW: AW: [CMake] Overriding default values

James Bigler bigler at cs.utah.edu
Fri Sep 2 13:19:14 EDT 2005


Well, this works if you want to make sure a particular flag is always present. 
It doesn't allow the user to remove it and keep it gone.  I think for that I 
still need to know of way to see if this is the first configure or not.

It worked for 2.0.6, but not for 1.8.  My only concern with version, is that I 
don't to force everyone that wants to build my code to have to build their own 
copy or install a newer version.

Thanks!
James

Sören Freudiger wrote:
> Hi James,
> try this one instead:
> 
> #################################################################
> ###   ADD_CXX_FLAGS(flags)     				      ###
> ### flags will be added to CMAKE_CXX_FLAGS                    ###
> #################################################################
> MACRO(ADD_CXX_FLAGS)
>   FOREACH(arg ${ARGN})
>     SET(TMP ${arg}) #elsewise the Seperate command doesn't work)
>     SEPARATE_ARGUMENTS(TMP)
>     FOREACH(option ${TMP})
>       STRING(REGEX REPLACE " ${option}" "" CMAKE_CXX_FLAGS
> "${CMAKE_CXX_FLAGS}")
>       STRING(REGEX REPLACE "${option}" "" CMAKE_CXX_FLAGS
> "${CMAKE_CXX_FLAGS}")
>       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${option}" CACHE STRING
> "common C++ build flags" FORCE)
>     ENDFOREACH(option ${TMP})
>   ENDFOREACH(arg ${ARGN})
> ENDMACRO(ADD_CXX_FLAGS)
> 
> works fine for me. but I don't know if it works on ver 1.8. I'm using 2.2
> and 2.3beta  
> 
> -----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: Freitag, 2. September 2005 18:58
> Cc: cmake at cmake.org
> Betreff: Re: AW: [CMake] Overriding default values
> 
> 
>>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")
>>
>>
>>>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?
>>>
> 
> 
> This doesn't work for CMake 1.8 at all (syntax errors).
> 
> For 2.0.6, this doesn't add the flag.  I tried it with a fresh configure and
> an old one (with cached values).
> 
> 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)
> 
> ###################################################
> 
> IF(CMAKE_SYSTEM MATCHES IRIX)
>    # For now force sproc on IRIX systems.
>    #  MESSAGE("Forcing Irix Threads")
>    SET(CMAKE_USE_SPROC_INIT 1)
>    SET(CMAKE_USE_PTHREADS_INIT 0)
>    SET(CMAKE_THREAD_LIBS_INIT -lfetchop)
>    # Check for CC compiler and add -LANG:std to it
>    IF(CMAKE_CXX_COMPILER MATCHES "CC")
>      ADD_CXX_FLAGS("-LANG:std")
>      # Uncomment to force it (which works).
> #     SET(CMAKE_CXX_FLAGS "-LANG:std"
> #       CACHE STRING "Standard CXX flags" FORCE)
>      SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -OPT:IEEE_arithmetic=3"
>        CACHE STRING "Optimized Flags" FORCE)
>    ENDIF(CMAKE_CXX_COMPILER MATCHES "CC") ELSE(CMAKE_SYSTEM MATCHES IRIX) #
> MESSAGE("IRIX not found") ENDIF(CMAKE_SYSTEM MATCHES IRIX)
> 
> Thanks,
> James
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
> 


More information about the CMake mailing list