Improve use of 3rd party libs
This commit is contained in:
parent
77c454b304
commit
6e7e87b73f
|
@ -30,6 +30,7 @@ if(NOT DEFINED FIND_THIRD_PARTY_LIBRARIES_EXISTS)
|
|||
|
||||
macro(link_against_library NAME LINKAGE REQUIRED)
|
||||
# determine whether the library is required or optional
|
||||
# FIXME: improve passing required argument
|
||||
if("${REQUIRED}" STREQUAL "OPTIONAL")
|
||||
set(${NAME}_REQUIRED "NO")
|
||||
elseif("${REQUIRED}" STREQUAL "REQUIRED")
|
||||
|
@ -41,21 +42,25 @@ if(NOT DEFINED FIND_THIRD_PARTY_LIBRARIES_EXISTS)
|
|||
# add library to list of libraries to link against when building dynamic libraries or applications
|
||||
if(${NAME}_STATIC_LIB AND (("${LINKAGE}" STREQUAL "AUTO_LINKAGE" AND ((STATIC_LINKAGE AND "${META_PROJECT_TYPE}" STREQUAL "application") OR (STATIC_LIBRARY_LINKAGE AND ("${META_PROJECT_TYPE}" STREQUAL "" OR "${META_PROJECT_TYPE}" STREQUAL "library")))) OR ("${LINKAGE}" STREQUAL "STATIC")))
|
||||
list(APPEND LIBRARIES ${${NAME}_STATIC_LIB})
|
||||
message(STATUS "Linking ${META_PROJECT_NAME} statically against external library ${NAME} (${${NAME}_STATIC_LIB}).")
|
||||
set(USE_STATIC_${NAME} ON)
|
||||
message(STATUS "Linking ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} statically against external library ${NAME} (${${NAME}_STATIC_LIB}).")
|
||||
elseif(${NAME}_DYNAMIC_LIB AND ("${LINKAGE}" STREQUAL "AUTO_LINKAGE" OR ("${LINKAGE}" STREQUAL "SHARED")))
|
||||
list(APPEND LIBRARIES ${${NAME}_DYNAMIC_LIB})
|
||||
message(STATUS "Linking ${META_PROJECT_NAME} dynamically against external library ${NAME} (${${NAME}_DYNAMIC_LIB}).")
|
||||
set(USE_STATIC_${NAME} OFF)
|
||||
message(STATUS "Linking ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} dynamically against external library ${NAME} (${${NAME}_DYNAMIC_LIB}).")
|
||||
else()
|
||||
if(${NAME}_REQUIRED)
|
||||
message(FATAL_ERROR "External library ${NAME} required by ${META_PROJECT_NAME} is not available for the specified linkage ${LINKAGE}.")
|
||||
message(FATAL_ERROR "External library ${NAME} required by ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} is not available for the specified linkage ${LINKAGE}.")
|
||||
else()
|
||||
message(WARNING "External library ${NAME} required by ${META_PROJECT_NAME} is not available for the specified linkage ${LINKAGE}.")
|
||||
message(WARNING "External library ${NAME} required by ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} is not available for the specified linkage ${LINKAGE}.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# add library to list of libraries to be provided as transitive dependencies when building static libraries
|
||||
list(APPEND STATIC_LIBRARIES ${${NAME}_STATIC_LIB})
|
||||
message(STATUS "Adding ${${NAME}_STATIC_LIB} to static library dependencies of ${META_PROJECT_NAME}.")
|
||||
if(${NAME}_STATIC_LIB)
|
||||
list(APPEND STATIC_LIBRARIES ${${NAME}_STATIC_LIB})
|
||||
message(STATUS "Adding ${${NAME}_STATIC_LIB} to static library dependencies of ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}.")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(use_external_library NAME LINKAGE REQUIRED)
|
||||
|
@ -109,7 +114,6 @@ if(NOT DEFINED FIND_THIRD_PARTY_LIBRARIES_EXISTS)
|
|||
use_external_library_from_package_static(${NAME} ${PKGNAME} ${INCLUDE_VAR} "${LIBRARY_VAR}" "${${NAME}_COMPATIBLE_VERSION}")
|
||||
endif()
|
||||
|
||||
|
||||
link_against_library(${NAME} ${LINKAGE} ${REQUIRED})
|
||||
|
||||
restore_default_library_suffixes()
|
||||
|
|
|
@ -46,3 +46,5 @@ macro(use_@META_PROJECT_VARNAME@)
|
|||
# make CMake modules of the project available
|
||||
list(APPEND CMAKE_MODULE_PATH ${@META_PROJECT_VARNAME_UPPER@_MODULE_DIRS})
|
||||
endmacro()
|
||||
|
||||
# FIXME: provide an imported target
|
||||
|
|
Loading…
Reference in New Issue