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