- updated cmake files to support toggling between release and debug builds (even release with debug info)
when calling CMAKE you may toggle debug or release like this: cmake -D CMAKE_BUILD_TYPE=Debug .. or cmake -D CMAKE_BUILD_TYPE=Release ..
This commit is contained in:
parent
367effb217
commit
003d15c28a
|
@ -2,7 +2,91 @@ CMAKE_MINIMUM_REQUIRED( VERSION 2.6.2 )
|
|||
PROJECT( MegaGlest )
|
||||
|
||||
#SET(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mk/cmake/Modules)
|
||||
|
||||
#
|
||||
# *NOTE: For now we assume some variation of GCC Compiler (or MingW for Windows binaries)
|
||||
# VC++ users should not use CMake yet but rather the build-mg.bat file in mk/windoze
|
||||
#
|
||||
|
||||
# build type defaults to release
|
||||
if(NOT DEFINED CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose build type: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.")
|
||||
endif(NOT DEFINED CMAKE_BUILD_TYPE)
|
||||
|
||||
# add additional CMake modules
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/mk/cmake/Modules)
|
||||
|
||||
MESSAGE(STATUS "Build type for this compile will be: ${CMAKE_BUILD_TYPE}")
|
||||
|
||||
## Compiler flags
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
MESSAGE(STATUS "Detected GNUC Compiler...")
|
||||
ELSEIF(MINGW)
|
||||
MESSAGE(STATUS "Detected MINGW Compiler...")
|
||||
ENDIF()
|
||||
|
||||
# Default compiler flags
|
||||
#SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s") ## Strip binary
|
||||
ADD_DEFINITIONS("-fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse")
|
||||
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||
|
||||
# Debug compiler flags
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3")
|
||||
|
||||
# Release compiler flags
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") ## Strip binary
|
||||
|
||||
# Release with debug info compiler flags
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g3 -O3")
|
||||
|
||||
# Release minimum size compiler flags
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -O3")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s") ## Strip binary
|
||||
|
||||
# The stuff below gets SVN Global Revision # but ONLY when calling cmake!
|
||||
# the FindSubversion.cmake module is part of the standard distribution
|
||||
include(FindSubversion)
|
||||
# extract working copy information for SOURCE_DIR into MY_XXX variables
|
||||
Subversion_WC_INFO(${PROJECT_SOURCE_DIR} MG)
|
||||
#add_definitions(-DSVNVERSION="${MG_WC_REVISION}")
|
||||
SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"${MG_WC_REVISION}\\\"'")
|
||||
|
||||
IF(UNIX AND NOT APPLE)
|
||||
# We do some funky character escaping to get the right stuff written out to
|
||||
# the final Makefile so we get the SVN Global Revsion #
|
||||
SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"`svnversion -n ${PROJECT_SOURCE_DIR}`\\\"'")
|
||||
ENDIF()
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${SVN_VERSION_CMD}")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${SVN_VERSION_CMD}")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${SVN_VERSION_CMD}")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${SVN_VERSION_CMD}")
|
||||
# We do some funky character escaping to get the right stuff written out to
|
||||
# the final Makefile so we get the SVN Global Revsion #
|
||||
string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}")
|
||||
|
||||
IF( CMAKE_BUILD_TYPE STREQUAL Debug )
|
||||
message("CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
ELSEIF( CMAKE_BUILD_TYPE STREQUAL Release )
|
||||
message("CMAKE_CXX_FLAGS_RELEASE: ${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
ELSEIF( CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO )
|
||||
message("CMAKE_CXX_FLAGS_RELWITHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
ELSEIF( CMAKE_BUILD_TYPE STREQUAL MINSIZEREL )
|
||||
message("CMAKE_CXX_FLAGS_MINSIZEREL: ${CMAKE_CXX_FLAGS_MINSIZEREL}")
|
||||
|
||||
ENDIF()
|
||||
|
||||
# Win32 specific Compiler Flags
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS("-D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DUSE_STREFLOP -DSTREFLOP_SSE -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DCURL_STATICLIB")
|
||||
ENDIF()
|
||||
|
||||
ENDIF()
|
||||
|
||||
IF(WIN32)
|
||||
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
|
||||
|
|
|
@ -159,40 +159,44 @@ add_custom_target(run ALL
|
|||
ENDIF()
|
||||
|
||||
# [RCL] FIXME: make it compiler-agnostic
|
||||
SET(CMAKE_CXX_FLAGS "-O3 -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse -DUSE_STREFLOP -DSTREFLOP_SSE")
|
||||
#SET(CMAKE_CXX_FLAGS "-O3 -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse -DUSE_STREFLOP -DSTREFLOP_SSE")
|
||||
|
||||
IF(WIN32)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -DCURL_STATICLIB")
|
||||
ENDIF()
|
||||
#IF(WIN32)
|
||||
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -DCURL_STATICLIB")
|
||||
#ENDIF()
|
||||
|
||||
# The stuff below gets SVN Global Revision # but ONLY when calling cmake!
|
||||
# the FindSubversion.cmake module is part of the standard distribution
|
||||
include(FindSubversion)
|
||||
#include(FindSubversion)
|
||||
# extract working copy information for SOURCE_DIR into MY_XXX variables
|
||||
Subversion_WC_INFO(${PROJECT_SOURCE_DIR} MG)
|
||||
#Subversion_WC_INFO(${PROJECT_SOURCE_DIR} MG)
|
||||
#add_definitions(-DSVNVERSION="${MG_WC_REVISION}")
|
||||
SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"${MG_WC_REVISION}\\\"'")
|
||||
#SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"${MG_WC_REVISION}\\\"'")
|
||||
|
||||
IF(UNIX AND NOT APPLE)
|
||||
#IF(UNIX AND NOT APPLE)
|
||||
# We do some funky character escaping to get the right stuff written out to
|
||||
# the final Makefile so we get the SVN Global Revsion #
|
||||
SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"`svnversion -n ${PROJECT_SOURCE_DIR}`\\\"'")
|
||||
ENDIF()
|
||||
# SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"`svnversion -n ${PROJECT_SOURCE_DIR}`\\\"'")
|
||||
#ENDIF()
|
||||
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SVN_VERSION_CMD}")
|
||||
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SVN_VERSION_CMD}")
|
||||
|
||||
IF(WIN32)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-subsystem,console -mconsole")
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wl,-subsystem,console -mconsole")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wl,-subsystem,console -mconsole")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Wl,-subsystem,console -mconsole")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Wl,-subsystem,console -mconsole")
|
||||
|
||||
ENDIF()
|
||||
|
||||
|
||||
#IF(UNIX AND NOT APPLE)
|
||||
# We do some funky character escaping to get the right stuff written out to
|
||||
# the final Makefile so we get the SVN Global Revsion #
|
||||
string(REPLACE "'" "\"" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
#ENDIF()
|
||||
# string(REPLACE "'" "\"" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
##ENDIF()
|
||||
|
||||
message("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
|
||||
#message("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
IF(WIN32)
|
||||
SET(TARGET_NAME "glest_game")
|
||||
|
|
|
@ -197,11 +197,11 @@ SET_SOURCE_FILES_PROPERTIES(${MG_INCLUDE_FILES} PROPERTIES HEADER_FILE_ONLY 1)
|
|||
|
||||
|
||||
# [RCL] FIXME: make it compiler-agnostic
|
||||
SET(CMAKE_CXX_FLAGS "-O3 -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse")
|
||||
#SET(CMAKE_CXX_FLAGS "-O3 -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse")
|
||||
|
||||
IF(WIN32)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DUSE_STREFLOP -DSTREFLOP_SSE -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DCURL_STATICLIB")
|
||||
ENDIF()
|
||||
#IF(WIN32)
|
||||
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DUSE_STREFLOP -DSTREFLOP_SSE -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DCURL_STATICLIB")
|
||||
#ENDIF()
|
||||
|
||||
#MESSAGE(STATUS "Source files: ${MG_SOURCE_FILES}")
|
||||
#MESSAGE(STATUS "Include files: ${MG_INCLUDE_FILES}")
|
||||
|
|
Loading…
Reference in New Issue