MACRO(FIND_LIBRARY_WITH_DEBUG var_name win32_dbg_postfix_name dgb_postfix libname) IF(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX") FIND_LIBRARY(${var_name} ${win32_dbg_postfix_name} ${dgb_postfix} ${libname} ${ARGN} ) ELSE() IF(NOT WIN32) FIND_LIBRARY(${var_name} ${libname} ${ARGN}) ELSE() SET(args ${ARGN}) SET(newargs "") SET(libnames_release "") SET(libnames_debug "") IF("${libname}" STREQUAL "NAMES") SET(append_rest 0) LIST(LENGTH args listCount) LIST(APPEND args " ") FOREACH(i RANGE ${listCount}) LIST(GET args ${i} val) IF(append_rest) LIST(APPEND newargs ${val}) ELSE() IF(${val} STREQUAL "PATHS" OR ${val} STREQUAL "HINTS") LIST(APPEND newargs ${val}) SET(append_rest 1) ELSE() LIST(APPEND libnames_release "${val}") LIST(APPEND libnames_debug "${val}${dgb_postfix}") ENDIF() ENDIF() ENDFOREACH() ELSE() LIST(APPEND libnames_release "${libname}") LIST(APPEND libnames_debug "${libname}${dgb_postfix}") SET(newargs ${args}) ENDIF() FIND_LIBRARY(${var_name}_RELEASE NAMES ${libnames_release} ${newargs} ) FIND_LIBRARY(${var_name}_DEBUG NAMES ${libnames_debug} ${newargs} ) IF(${var_name}_RELEASE AND ${var_name}_DEBUG) SET(${var_name} optimized ${${var_name}_RELEASE} debug ${${var_name}_DEBUG}) ELSE() IF(${var_name}_RELEASE) SET(${var_name} ${${var_name}_RELEASE}) ELSE() SET(${var_name} ${${var_name}_DEBUG}) ENDIF() ENDIF() MARK_AS_ADVANCED(${var_name}_RELEASE) MARK_AS_ADVANCED(${var_name}_DEBUG) ENDIF() ENDIF() ENDMACRO()