diff --git a/CMakeLists.txt b/CMakeLists.txt index 94ddaaa0e..00f6ea1e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -508,7 +508,9 @@ ENDIF() # Installation stuff SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "add a postfix, usually d on windows") -ADD_DEFINITIONS(-DOSG_DEBUG_POSTFIX=${CMAKE_DEBUG_POSTFIX}) +SET(CMAKE_RELEASE_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows") +SET(CMAKE_RELWITHDEBINFO_POSTFIX "rd" CACHE STRING "add a postfix, usually empty on windows") +SET(CMAKE_MINSIZEREL_POSTFIX "s" CACHE STRING "add a postfix, usually empty on windows") IF(UNIX AND NOT WIN32) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG") diff --git a/CMakeModules/FindOSG.cmake b/CMakeModules/FindOSG.cmake index 0560645be..c82b51bae 100644 --- a/CMakeModules/FindOSG.cmake +++ b/CMakeModules/FindOSG.cmake @@ -61,7 +61,7 @@ MACRO(FIND_OSG_LIBRARY MYLIBRARY MYLIBRARYNAME) ) FIND_LIBRARY(${MYLIBRARY} - NAMES ${MYLIBRARYNAME} + NAMES "${MYLIBRARYNAME}${CMAKE_RELEASE_POSTFIX}" PATHS ${OSG_DIR}/lib/Release ${OSG_DIR}/lib64/Release @@ -81,7 +81,7 @@ MACRO(FIND_OSG_LIBRARY MYLIBRARY MYLIBRARYNAME) ) FIND_LIBRARY(${MYLIBRARY} - NAMES ${MYLIBRARYNAME} + NAMES "${MYLIBRARYNAME}${CMAKE_RELEASE_POSTFIX}" PATHS ~/Library/Frameworks /Library/Frameworks diff --git a/CMakeModules/OsgMacroUtils.cmake b/CMakeModules/OsgMacroUtils.cmake index a8a4d6821..f22958b54 100644 --- a/CMakeModules/OsgMacroUtils.cmake +++ b/CMakeModules/OsgMacroUtils.cmake @@ -4,7 +4,7 @@ # full path of the library name. in order to differentiate release and debug, this macro get the # NAME of the variables, so the macro gets as arguments the target name and the following list of parameters # is intended as a list of variable names each one containing the path of the libraries to link to -# The existance of a varibale name with _DEBUG appended is tested and, in case it' s value is used +# The existance of a variable name with _DEBUG appended is tested and, in case it' s value is used # for linking to when in debug mode # the content of this library for linking when in debugging ####################################################################################################### @@ -30,10 +30,10 @@ MACRO(LINK_INTERNAL TRGTNAME) #CMake 2.4.7, at least seem to use PREFIX instead of IMPORT_PREFIX for computing linkage info to use into projects, # so we full path name to specify linkage, this prevent automatic inferencing of dependencies, so we add explicit depemdencies #to library targets used - TARGET_LINK_LIBRARIES(${TRGTNAME} optimized "${OUTPUT_LIBDIR}/${LINKLIB}.lib" debug "${OUTPUT_LIBDIR}/${LINKLIB}${CMAKE_DEBUG_POSTFIX}.lib") + TARGET_LINK_LIBRARIES(${TRGTNAME} optimized "${OUTPUT_LIBDIR}/${LINKLIB}${CMAKE_RELEASE_POSTFIX}.lib" debug "${OUTPUT_LIBDIR}/${LINKLIB}${CMAKE_DEBUG_POSTFIX}.lib") ADD_DEPENDENCIES(${TRGTNAME} ${LINKLIB}) ELSE(MSVC AND OSG_MSVC_VERSIONED_DLL) - TARGET_LINK_LIBRARIES(${TRGTNAME} optimized "${LINKLIB}" debug "${LINKLIB}${CMAKE_DEBUG_POSTFIX}") + TARGET_LINK_LIBRARIES(${TRGTNAME} optimized "${LINKLIB}${CMAKE_RELEASE_POSTFIX}" debug "${LINKLIB}${CMAKE_DEBUG_POSTFIX}") ENDIF(MSVC AND OSG_MSVC_VERSIONED_DLL) ENDFOREACH(LINKLIB) ENDIF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 4) @@ -267,8 +267,11 @@ MACRO(SETUP_EXE IS_COMMANDLINE_APP) ENDIF(${IS_COMMANDLINE_APP}) SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES PROJECT_LABEL "${TARGET_LABEL}") - SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}") SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES OUTPUT_NAME ${TARGET_NAME}) + SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES DEBUG_OUTPUT_NAME "${TARGET_NAME}${CMAKE_DEBUG_POSTFIX}") + SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES RELEASE_OUTPUT_NAME "${TARGET_NAME}${CMAKE_RELEASE_POSTFIX}") + SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES RELWITHDEBINFO_OUTPUT_NAME "${TARGET_NAME}${CMAKE_RELWITHDEBINFO_POSTFIX}") + SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES MINSIZEREL_OUTPUT_NAME "${TARGET_NAME}${CMAKE_MINSIZEREL_POSTFIX}") IF(MSVC_IDE AND OSG_MSVC_VERSIONED_DLL) SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES PREFIX "../") diff --git a/src/osgDB/CMakeLists.txt b/src/osgDB/CMakeLists.txt index d363a0cae..8f304dd10 100644 --- a/src/osgDB/CMakeLists.txt +++ b/src/osgDB/CMakeLists.txt @@ -10,6 +10,24 @@ IF (DYNAMIC_OPENSCENEGRAPH) ADD_DEFINITIONS(-DOSG_DEFAULT_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib${LIB_POSTFIX}/${OSG_PLUGINS}) ENDIF() + # Set the library extension according to what configuration is being built. + # If the string is empty, don't set the define. + IF(CMAKE_DEBUG_POSTFIX) + SET(CMAKE_CXX_FLAGS_DEBUG + "${CMAKE_CXX_FLAGS_DEBUG} -DOSG_LIBRARY_POSTFIX=${CMAKE_DEBUG_POSTFIX}") + ENDIF() + IF(CMAKE_RELEASE_POSTFIX) + SET(CMAKE_CXX_FLAGS_RELEASE + "${CMAKE_CXX_FLAGS_RELEASE} -DOSG_LIBRARY_POSTFIX=${CMAKE_RELEASE_POSTFIX}") + ENDIF() + IF(CMAKE_RELWITHDEBINFO_POSTFIX) + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO + "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DOSG_LIBRARY_POSTFIX=${CMAKE_RELWITHDEBINFO_POSTFIX}") + ENDIF() + IF(CMAKE_MINSIZEREL_POSTFIX) + SET(CMAKE_CXX_FLAGS_MINSIZEREL + "${CMAKE_CXX_FLAGS_MINSIZEREL} -DOSG_LIBRARY_POSTFIX=${CMAKE_MINSIZEREL_POSTFIX}") + ENDIF() ELSE () ADD_DEFINITIONS(-DOSG_LIBRARY_STATIC) ENDIF() diff --git a/src/osgDB/Registry.cpp b/src/osgDB/Registry.cpp index c034704ec..5f0dcad98 100644 --- a/src/osgDB/Registry.cpp +++ b/src/osgDB/Registry.cpp @@ -43,10 +43,10 @@ using std::tolower; #endif -#ifdef OSG_DEBUG_POSTFIX - #define OSG_DEBUG_POSTFIX_WITH_QUOTES ADDQUOTES(OSG_DEBUG_POSTFIX) +#ifdef OSG_LIBRARY_POSTFIX + #define OSG_LIBRARY_POSTFIX_WITH_QUOTES ADDQUOTES(OSG_LIBRARY_POSTFIX) #else - #define OSG_DEBUG_POSTFIX_WITH_QUOTES "d" + #define OSG_LIBRARY_POSTFIX_WITH_QUOTES "" #endif using namespace osg; @@ -608,31 +608,15 @@ std::string Registry::createLibraryNameForExtension(const std::string& ext) #endif #if defined(__CYGWIN__) - #ifdef _DEBUG - return prepend+"cygwin_"+"osgdb_"+lowercase_ext+OSG_DEBUG_POSTFIX_WITH_QUOTES+".dll"; - #else - return prepend+"cygwin_"+"osgdb_"+lowercase_ext+".dll"; - #endif + return prepend+"cygwin_"+"osgdb_"+lowercase_ext+OSG_LIBRARY_POSTFIX_WITH_QUOTES+".dll"; #elif defined(__MINGW32__) - return prepend+"mingw_"+"osgdb_"+lowercase_ext+".dll"; + return prepend+"mingw_"+"osgdb_"+lowercase_ext+OSG_LIBRARY_POSTFIX_WITH_QUOTES+".dll"; #elif defined(WIN32) - #ifdef _DEBUG - return prepend+"osgdb_"+lowercase_ext+ OSG_DEBUG_POSTFIX_WITH_QUOTES +".dll"; - #else - return prepend+"osgdb_"+lowercase_ext+".dll"; - #endif + return prepend+"osgdb_"+lowercase_ext+OSG_LIBRARY_POSTFIX_WITH_QUOTES+".dll"; #elif macintosh - #ifdef _DEBUG - return prepend+"osgdb_"+lowercase_ext+ OSG_DEBUG_POSTFIX_WITH_QUOTES; - #else - return prepend+"osgdb_"+lowercase_ext; - #endif + return prepend+"osgdb_"+lowercase_ext+OSG_LIBRARY_POSTFIX_WITH_QUOTES; #else - #ifdef _DEBUG - return prepend+"osgdb_"+lowercase_ext+ OSG_DEBUG_POSTFIX_WITH_QUOTES + ADDQUOTES(OSG_PLUGIN_EXTENSION); - #else - return prepend+"osgdb_"+lowercase_ext+ADDQUOTES(OSG_PLUGIN_EXTENSION); - #endif + return prepend+"osgdb_"+lowercase_ext+OSG_LIBRARY_POSTFIX_WITH_QUOTES+ADDQUOTES(OSG_PLUGIN_EXTENSION); #endif } @@ -640,27 +624,15 @@ std::string Registry::createLibraryNameForExtension(const std::string& ext) std::string Registry::createLibraryNameForNodeKit(const std::string& name) { #if defined(__CYGWIN__) - return "cyg"+name+".dll"; + return "cyg"+name+OSG_LIBRARY_POSTFIX_WITH_QUOTES+".dll"; #elif defined(__MINGW32__) - return "lib"+name+".dll"; + return "lib"+name+OSG_LIBRARY_POSTFIX_WITH_QUOTES+".dll"; #elif defined(WIN32) - #ifdef _DEBUG - return name+OSG_DEBUG_POSTFIX_WITH_QUOTES +".dll"; - #else - return name+".dll"; - #endif + return name+OSG_LIBRARY_POSTFIX_WITH_QUOTES+".dll"; #elif macintosh - #ifdef _DEBUG - return name+OSGDEBUG_POSTFIX_WITH_QUOTES; - #else - return name; - #endif + return name+OSG_LIBRARY_POSTFIX_WITH_QUOTES; #else - #ifdef _DEBUG - return "lib"+name+OSG_DEBUG_POSTFIX_WITH_QUOTES + ADDQUOTES(OSG_PLUGIN_EXTENSION); - #else - return "lib"+name+ADDQUOTES(OSG_PLUGIN_EXTENSION); - #endif + return "lib"+name+OSG_LIBRARY_POSTFIX_WITH_QUOTES + ADDQUOTES(OSG_PLUGIN_EXTENSION); #endif }