1843
+ − 1
#
+ − 2
# FIND_LIBRARY_WITH_DEBUG
+ − 3
# -> enhanced FIND_LIBRARY to allow the search for an
+ − 4
# optional debug library with a WIN32_DEBUG_POSTFIX similar
+ − 5
# to CMAKE_DEBUG_POSTFIX when creating a shared lib
+ − 6
# it has to be the second and third argument
+ − 7
+ − 8
# Copyright (c) 2007, Christian Ehrlicher, <ch.ehrlicher@gmx.de>
+ − 9
# Redistribution and use is allowed according to the terms of the BSD license.
+ − 10
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+ − 11
+ − 12
MACRO(FIND_LIBRARY_WITH_DEBUG var_name win32_dbg_postfix_name dgb_postfix libname)
+ − 13
+ − 14
IF(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX")
+ − 15
+ − 16
# no WIN32_DEBUG_POSTFIX -> simply pass all arguments to FIND_LIBRARY
+ − 17
FIND_LIBRARY(${var_name}
+ − 18
${win32_dbg_postfix_name}
+ − 19
${dgb_postfix}
+ − 20
${libname}
+ − 21
${ARGN}
+ − 22
)
+ − 23
+ − 24
ELSE(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX")
+ − 25
+ − 26
IF(NOT WIN32)
+ − 27
# on non-win32 we don't need to take care about WIN32_DEBUG_POSTFIX
+ − 28
+ − 29
FIND_LIBRARY(${var_name} ${libname} ${ARGN})
+ − 30
+ − 31
ELSE(NOT WIN32)
+ − 32
+ − 33
# 1. get all possible libnames
+ − 34
SET(args ${ARGN})
+ − 35
SET(newargs "")
+ − 36
SET(libnames_release "")
+ − 37
SET(libnames_debug "")
+ − 38
+ − 39
LIST(LENGTH args listCount)
+ − 40
+ − 41
IF("${libname}" STREQUAL "NAMES")
+ − 42
SET(append_rest 0)
+ − 43
LIST(APPEND args " ")
+ − 44
+ − 45
FOREACH(i RANGE ${listCount})
+ − 46
LIST(GET args ${i} val)
+ − 47
+ − 48
IF(append_rest)
+ − 49
LIST(APPEND newargs ${val})
+ − 50
ELSE(append_rest)
+ − 51
IF("${val}" STREQUAL "PATHS")
+ − 52
LIST(APPEND newargs ${val})
+ − 53
SET(append_rest 1)
+ − 54
ELSE("${val}" STREQUAL "PATHS")
+ − 55
LIST(APPEND libnames_release "${val}")
+ − 56
LIST(APPEND libnames_debug "${val}${dgb_postfix}")
+ − 57
ENDIF("${val}" STREQUAL "PATHS")
+ − 58
ENDIF(append_rest)
+ − 59
+ − 60
ENDFOREACH(i)
+ − 61
+ − 62
ELSE("${libname}" STREQUAL "NAMES")
+ − 63
+ − 64
# just one name
+ − 65
LIST(APPEND libnames_release "${libname}")
+ − 66
LIST(APPEND libnames_debug "${libname}${dgb_postfix}")
+ − 67
+ − 68
SET(newargs ${args})
+ − 69
+ − 70
ENDIF("${libname}" STREQUAL "NAMES")
+ − 71
+ − 72
# search the release lib
+ − 73
FIND_LIBRARY(${var_name}_RELEASE
+ − 74
NAMES ${libnames_release}
+ − 75
${newargs}
+ − 76
)
+ − 77
+ − 78
# search the debug lib
+ − 79
FIND_LIBRARY(${var_name}_DEBUG
+ − 80
NAMES ${libnames_debug}
+ − 81
${newargs}
+ − 82
)
+ − 83
+ − 84
IF(${var_name}_RELEASE AND ${var_name}_DEBUG)
+ − 85
+ − 86
# both libs found
+ − 87
SET(${var_name} optimized ${${var_name}_RELEASE}
+ − 88
debug ${${var_name}_DEBUG})
+ − 89
+ − 90
ELSE(${var_name}_RELEASE AND ${var_name}_DEBUG)
+ − 91
+ − 92
IF(${var_name}_RELEASE)
+ − 93
+ − 94
# only release found
+ − 95
SET(${var_name} ${${var_name}_RELEASE})
+ − 96
+ − 97
ELSE(${var_name}_RELEASE)
+ − 98
+ − 99
# only debug (or nothing) found
+ − 100
SET(${var_name} ${${var_name}_DEBUG})
+ − 101
+ − 102
ENDIF(${var_name}_RELEASE)
+ − 103
+ − 104
ENDIF(${var_name}_RELEASE AND ${var_name}_DEBUG)
+ − 105
+ − 106
MARK_AS_ADVANCED(${var_name}_RELEASE)
+ − 107
MARK_AS_ADVANCED(${var_name}_DEBUG)
+ − 108
+ − 109
ENDIF(NOT WIN32)
+ − 110
+ − 111
ENDIF(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX")
+ − 112
+ − 113
ENDMACRO(FIND_LIBRARY_WITH_DEBUG)