diff --git a/cmake/modules/3rdParty.cmake b/cmake/modules/3rdParty.cmake index e6ec9e6..c4620a4 100644 --- a/cmake/modules/3rdParty.cmake +++ b/cmake/modules/3rdParty.cmake @@ -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() diff --git a/cmake/templates/Config.cmake.in b/cmake/templates/Config.cmake.in index 2e13b35..a31e7d7 100644 --- a/cmake/templates/Config.cmake.in +++ b/cmake/templates/Config.cmake.in @@ -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