On 30. Jul, 2010, at 14:16 , John Drescher wrote: >> Please do explain. How would this work? What would the API be? And now it >> suddenly sounds like CMake isn't supposed to do everything automagically >> anymore. If that is the case, please RTFM and look into the OUTPUT_NAME >> target property. It offers exactly what you want! >> > > Or the prefix variables. > > I have the following in a file called NamingConvention.cmake. > > IF(MSVC) > > IF(MSVC90) > SET(CMAKE_DEBUG_POSTFIX "_d_2008") > SET(CMAKE_RELEASE_POSTFIX "_2008") > SET(CMAKE_RELWITHDEBINFO_POSTFIX "_2008") > ENDIF(MSVC90) > > IF(MSVC80) > SET(CMAKE_DEBUG_POSTFIX "_d_2005") > SET(CMAKE_RELEASE_POSTFIX "_2005") > SET(CMAKE_RELWITHDEBINFO_POSTFIX "_2005") > ENDIF(MSVC80) > > IF(MSVC71) > SET(CMAKE_DEBUG_POSTFIX "_d_2003") > SET(CMAKE_RELEASE_POSTFIX "_2003") > SET(CMAKE_RELWITHDEBINFO_POSTFIX "_2003") > ENDIF(MSVC71) > > IF(MSVC70) > SET(CMAKE_DEBUG_POSTFIX "_d_2002") > SET(CMAKE_RELEASE_POSTFIX "_2002") > SET(CMAKE_RELWITHDEBINFO_POSTFIX "_2002") > ENDIF(MSVC70) > > IF(MSVC60) > SET(CMAKE_DEBUG_POSTFIX "_d_vc6") > SET(CMAKE_RELEASE_POSTFIX "_vc6") > SET(CMAKE_RELWITHDEBINFO_POSTFIX "_vc6") > ENDIF(MSVC60) > > #Name 64bit libaraies differenly > IF(CMAKE_SIZEOF_VOID_P MATCHES 8) > SET(CMAKE_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}_x64") > SET(CMAKE_RELEASE_POSTFIX "${CMAKE_RELEASE_POSTFIX}_x64") > SET(CMAKE_RELWITHDEBINFO_POSTFIX > "${CMAKE_RELWITHDEBINFO_POSTFIX}_x64") > > IF(DETECT_64BIT_PORTABILITY) > SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wp64") > ENDIF(DETECT_64BIT_PORTABILITY) > ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8) > > ENDIF(MSVC) > > To activate the naming convention for any of my projects I just call > include(CMake\NamingConvention.cmake) in the top of my CMakeLists.txt > and my libraries all have decorated names that distinguish between > compiler name and 32/64 bit. If I wanted I could spend 5 minutes and > add gcc and other defined compilers to this. > > John
Thanks, finally. Olaf, do you see how simple it is? And this code could be shortened by a mile: if(MSVC90) set(comp_suffix _2008) elseif(MSVC80) set(comp_suffix _2005) elseif(MSVC71) set(comp_suffix _2003) elseif(MSVC70) set(comp_suffix _2002) elseif(MSVC60) set(comp_suffix _vc6) endif() set(arch_suffix) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(arch_suffix _x64) # THIS IS SPECIFIC TO JOHN'S PROJECT if(DETECT_64BIT_PORTABILITY) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wp64") endif() endif() set(CMAKE_DEBUG_POSTFIX _d${comp_suffix}${arch_suffix}) set(CMAKE_RELEASE_POSTFIX ${comp_suffix}${arch_suffix}) set(CMAKE_RELWITHDEBINFO_POSTFIX ${comp_suffix}${arch_suffix}) set(CMAKE_MINSIZEREL_POSTFIX ${comp_suffix}${arch_suffix}) You can extend this to your hearts content... _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake