From 934229ac783fbff583222410035f4a8ee2d096d1 Mon Sep 17 00:00:00 2001 From: apn Date: Fri, 8 Jul 2016 16:26:08 +0300 Subject: [PATCH] Create imported target for each 3rd party product --- CMakeLists.txt | 14 +++++----- adm/templates/OpenCASCADE3rdparty.cmake.in | 30 ++++++++++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 083f301012..b8a9b3e2e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1096,10 +1096,12 @@ foreach (OCCT_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES}) foreach (ALL_VAR ${ALL_VARS}) string (REGEX MATCH "^3RDPARTY_([^_]*)_DLL$" DLL_FOUND ${ALL_VAR}) if (DLL_FOUND) + set (SET_OpenCASCADE_3RDPARTY "${SET_OpenCASCADE_3RDPARTY}CREATE_IMPORTED_TARGET (${CMAKE_MATCH_1} ${OCCT_CONFIGURATION_UPPER} \"${3RDPARTY_${CMAKE_MATCH_1}_DLL}\" TRUE)\n") set (SET_OpenCASCADE_3RDPARTY "${SET_OpenCASCADE_3RDPARTY}set (3RDPARTY_${CMAKE_MATCH_1}_DLL_${OCCT_CONFIGURATION_UPPER} \"${3RDPARTY_${CMAKE_MATCH_1}_DLL}\")\n") endif() string (REGEX MATCH "^3RDPARTY_([^_]*)_LIBRARY$" LIB_FOUND ${ALL_VAR}) if (LIB_FOUND) + set (SET_OpenCASCADE_3RDPARTY "${SET_OpenCASCADE_3RDPARTY}CREATE_IMPORTED_TARGET (${CMAKE_MATCH_1} ${OCCT_CONFIGURATION_UPPER} \"${3RDPARTY_${CMAKE_MATCH_1}_LIBRARY}\" FALSE)\n") set (SET_OpenCASCADE_3RDPARTY "${SET_OpenCASCADE_3RDPARTY}set (3RDPARTY_${CMAKE_MATCH_1}_LIBRARY_${OCCT_CONFIGURATION_UPPER} \"${3RDPARTY_${CMAKE_MATCH_1}_LIBRARY}\")\n") endif() string (REGEX MATCH "^3RDPARTY_([^_]*_INCLUDE_DIR$)" INC_FOUND ${ALL_VAR}) @@ -1110,13 +1112,13 @@ foreach (OCCT_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES}) if (INC_FOUND2) set (SET_OpenCASCADE_3RDPARTY "${SET_OpenCASCADE_3RDPARTY}set (3RDPARTY_${CMAKE_MATCH_1}_${OCCT_CONFIGURATION_UPPER} \"${3RDPARTY_${CMAKE_MATCH_1}}\")\n") endif() - string (REGEX MATCH "^3RDPARTY_VTK_DLL_DIR$" VTK_DLLDIR_FOUND ${ALL_VAR}) - if (VTK_DLLDIR_FOUND) - set (SET_OpenCASCADE_3RDPARTY "${SET_OpenCASCADE_3RDPARTY}set (3RDPARTY_VTK_DLL_DIR_${OCCT_CONFIGURATION_UPPER} \"${3RDPARTY_VTK_DLL_DIR}\")\n") + string (REGEX MATCH "^3RDPARTY_([^_]*_DLL_DIR$)" DLLDIR_FOUND ${ALL_VAR}) + if (DLLDIR_FOUND) + set (SET_OpenCASCADE_3RDPARTY "${SET_OpenCASCADE_3RDPARTY}set (3RDPARTY_${CMAKE_MATCH_1}_${OCCT_CONFIGURATION_UPPER} \"${3RDPARTY_${CMAKE_MATCH_1}}\")\n") endif() - string (REGEX MATCH "^3RDPARTY_VTK_LIBRARY_DIR$" VTK_LIBDIR_FOUND ${ALL_VAR}) - if (${VTK_LIBDIR_FOUND}) - set (SET_OpenCASCADE_3RDPARTY "${SET_OpenCASCADE_3RDPARTY}set (3RDPARTY_VTK_LIBRARY_DIR_${OCCT_CONFIGURATION_UPPER} \"${3RDPARTY_VTK_LIBRARY_DIR}\")\n") + string (REGEX MATCH "^3RDPARTY_([^_]*_LIBRARY_DIR$)" LIBDIR_FOUND ${ALL_VAR}) + if (LIBDIR_FOUND) + set (SET_OpenCASCADE_3RDPARTY "${SET_OpenCASCADE_3RDPARTY}set (3RDPARTY_${CMAKE_MATCH_1}_${OCCT_CONFIGURATION_UPPER} \"${3RDPARTY_${CMAKE_MATCH_1}}\")\n") endif() endforeach() configure_file("${CMAKE_SOURCE_DIR}/adm/templates/OpenCASCADECompileDefinitionsAndFlags.cmake.in" "OpenCASCADECompileDefinitionsAndFlags-${OCCT_CONFIGURATION_LOWER}.cmake" @ONLY) diff --git a/adm/templates/OpenCASCADE3rdparty.cmake.in b/adm/templates/OpenCASCADE3rdparty.cmake.in index 809f095a47..f0a854fccc 100644 --- a/adm/templates/OpenCASCADE3rdparty.cmake.in +++ b/adm/templates/OpenCASCADE3rdparty.cmake.in @@ -6,4 +6,34 @@ # This file is configured by OpenCASCADE. # +macro (CREATE_IMPORTED_TARGET TARGET_NAME CONFIGURATION TARGET_LIBRARY_FILE_PATH IS_DYNAMIC_LIBRARY) + # Create imported target + if (NOT TARGET ${TARGET_NAME}) + add_library(${TARGET_NAME} SHARED IMPORTED) + endif() + + # Append new configuration to the target + get_property (TARGET_IMPORTED_CONFIGURATIONS TARGET ${TARGET_NAME} PROPERTY IMPORTED_CONFIGURATIONS) + list (FIND TARGET_IMPORTED_CONFIGURATIONS ${CONFIGURATION} IS_ALREADY_ADDED) + if (${IS_ALREADY_ADDED} EQUAL -1) + set_property(TARGET ${TARGET_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${CONFIGURATION}) + endif() + + if (IS_DYNAMIC_LIBRARY) + # Add *.dll(Windows)/*.so(Linux)/*.dylib(MacOS) library to the target + if (NOT "${TARGET_LIBRARY_FILE_PATH}" STREQUAL "") + set_target_properties(${TARGET_NAME} PROPERTIES IMPORTED_LOCATION_${CONFIGURATION} "${TARGET_LIBRARY_FILE_PATH}") + list(APPEND _IMPORT_CHECK_FILES_FOR_${TARGET_NAME} "${TARGET_LIBRARY_FILE_PATH}" ) + endif() + else() + # Add library *.lib to the target for Windows platform + if (WIN32) + if (NOT "${TARGET_LIBRARY_FILE_PATH}" STREQUAL "") + set_target_properties(${TARGET_NAME} PROPERTIES IMPORTED_IMPLIB_${CONFIGURATION} "${TARGET_LIBRARY_FILE_PATH}") + list(APPEND _IMPORT_CHECK_FILES_FOR_${TARGET_NAME} "${TARGET_LIBRARY_FILE_PATH}") + endif() + endif() + endif() +endmacro() + @SET_OpenCASCADE_3RDPARTY@ \ No newline at end of file -- 2.39.5