AW: AW: [CMake] Overriding default values

Sören Freudiger muffmolch at gmx.de
Fri Sep 2 13:13:07 EDT 2005


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