Merge topic 'test-SelectLibraryConfigurations'

a22f4fa SelectLibraryConfigurations: fix for release and debug libs being the same
5052fbc SelectLibraryConfigurations: add testcase
This commit is contained in:
David Cole 2012-10-23 16:37:37 -04:00 committed by CMake Topic Stage
commit 23a257628b
3 changed files with 75 additions and 5 deletions

View File

@ -48,6 +48,15 @@ macro( select_library_configurations basename )
# if only the debug version was found, set the release value to be the
# debug value.
_set_library_name( ${basename} DEBUG RELEASE )
# Set a default case, which will come into effect if
# -no build type is set and the generator only supports one build type
# at a time (i.e. CMAKE_CONFIGURATION_TYPES is false)
# -${basename}_LIBRARY_DEBUG and ${basename}_LIBRARY_RELEASE are the same
# -${basename}_LIBRARY_DEBUG and ${basename}_LIBRARY_RELEASE are both empty
set( ${basename}_LIBRARY ${${basename}_LIBRARY_RELEASE} )
set( ${basename}_LIBRARIES ${${basename}_LIBRARY_RELEASE} )
if( ${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE AND
NOT ${basename}_LIBRARY_DEBUG STREQUAL ${basename}_LIBRARY_RELEASE )
# if the generator supports configuration types or CMAKE_BUILD_TYPE
@ -61,11 +70,6 @@ macro( select_library_configurations basename )
list( APPEND ${basename}_LIBRARY debug "${_libname}" )
endforeach()
set( ${basename}_LIBRARIES "${${basename}_LIBRARY}" )
else()
# If there are no configuration types or build type, just use
# the release version
set( ${basename}_LIBRARY ${${basename}_LIBRARY_RELEASE} )
set( ${basename}_LIBRARIES ${${basename}_LIBRARY_RELEASE} )
endif()
endif()

View File

@ -27,6 +27,8 @@ endif()
add_CMakeOnly_test(AllFindModules)
add_CMakeOnly_test(SelectLibraryConfigurations)
add_CMakeOnly_test(TargetScope)
add_CMakeOnly_test(find_library)

View File

@ -0,0 +1,64 @@
cmake_minimum_required(VERSION 2.8)
project(SelectLibraryConfigurations NONE)
include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
macro(check_slc basename expect)
message(STATUS "checking select_library_configurations(${basename})")
select_library_configurations(${basename})
if (NOT ${basename}_LIBRARY STREQUAL "${expect}")
message(SEND_ERROR "select_library_configurations(${basename}) returned '${${basename}_LIBRARY}' but '${expect}' was expected")
endif ()
if (NOT ${basename}_LIBRARY STREQUAL "${${basename}_LIBRARIES}")
message(SEND_ERROR "select_library_configurations(${basename}) LIBRARY: '${${basename}_LIBRARY}' LIBRARIES: '${${basename}_LIBRARIES}'")
endif ()
endmacro(check_slc)
if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
set(NOTYPE_RELONLY_LIBRARY_RELEASE "opt")
check_slc(NOTYPE_RELONLY "opt")
set(NOTYPE_DBGONLY_LIBRARY_DEBUG "dbg")
check_slc(NOTYPE_DBGONLY "dbg")
set(NOTYPE_RELDBG_LIBRARY_RELEASE "opt")
set(NOTYPE_RELDBG_LIBRARY_DEBUG "dbg")
check_slc(NOTYPE_RELDBG "opt")
set(CMAKE_BUILD_TYPE Debug)
endif ()
check_slc(empty "")
set(OPTONLY_LIBRARY_RELEASE "opt")
check_slc(OPTONLY "opt")
set(DBGONLY_LIBRARY_RELEASE "dbg")
check_slc(DBGONLY "dbg")
set(SAME_LIBRARY_RELEASE "same")
set(SAME_LIBRARY_DEBUG "same")
check_slc(SAME "same")
set(OPTONLYLIST_LIBRARY_RELEASE "opt1;opt2")
check_slc(OPTONLYLIST "opt1;opt2")
set(DBGONLYLIST_LIBRARY_RELEASE "dbg1;dbg2")
check_slc(DBGONLYLIST "dbg1;dbg2")
set(OPT1DBG1_LIBRARY_RELEASE "opt")
set(OPT1DBG1_LIBRARY_DEBUG "dbg")
check_slc(OPT1DBG1 "optimized;opt;debug;dbg")
set(OPT1DBG2_LIBRARY_RELEASE "opt")
set(OPT1DBG2_LIBRARY_DEBUG "dbg1;dbg2")
check_slc(OPT1DBG2 "optimized;opt;debug;dbg1;debug;dbg2")
set(OPT2DBG1_LIBRARY_RELEASE "opt1;opt2")
set(OPT2DBG1_LIBRARY_DEBUG "dbg")
check_slc(OPT2DBG1 "optimized;opt1;optimized;opt2;debug;dbg")
set(OPT2DBG2_LIBRARY_RELEASE "opt1;opt2")
set(OPT2DBG2_LIBRARY_DEBUG "dbg1;dbg2")
check_slc(OPT2DBG2 "optimized;opt1;optimized;opt2;debug;dbg1;debug;dbg2")