From 32f20fa2019bb8c1be4e236617fae8ae8fb045b7 Mon Sep 17 00:00:00 2001 From: apn Date: Wed, 8 Jun 2016 17:55:28 +0300 Subject: [PATCH] 0027560: Using OCCT third-party in products Added generation OpenCASCADE3rdparty cmake file with paths to used third-party products. --- CMakeLists.txt | 30 ++++++++++++++++++++++ adm/templates/OpenCASCADE3rdparty.cmake.in | 9 +++++++ adm/templates/OpenCASCADEConfig.cmake.in | 6 +++++ 3 files changed, 45 insertions(+) create mode 100644 adm/templates/OpenCASCADE3rdparty.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index b6029e1f9c..083f301012 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1092,11 +1092,41 @@ foreach (OCCT_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES}) endforeach() set (SET_OpenCASCADE_CMAKE_C_FLAGS "${CMAKE_C_FLAGS_${OCCT_CONFIGURATION_UPPER}}") set (SET_OpenCASCADE_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_${OCCT_CONFIGURATION_UPPER}}") + get_cmake_property(ALL_VARS VARIABLES) + foreach (ALL_VAR ${ALL_VARS}) + string (REGEX MATCH "^3RDPARTY_([^_]*)_DLL$" DLL_FOUND ${ALL_VAR}) + if (DLL_FOUND) + 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}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}) + if (INC_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_([^_]*_INCLUDE_DIR[^S]+)" INC_FOUND2 ${ALL_VAR}) + 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") + 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") + endif() + endforeach() configure_file("${CMAKE_SOURCE_DIR}/adm/templates/OpenCASCADECompileDefinitionsAndFlags.cmake.in" "OpenCASCADECompileDefinitionsAndFlags-${OCCT_CONFIGURATION_LOWER}.cmake" @ONLY) + configure_file("${CMAKE_SOURCE_DIR}/adm/templates/OpenCASCADE3rdparty.cmake.in" "OpenCASCADE3rdparty-${OCCT_CONFIGURATION_LOWER}.cmake" @ONLY) endforeach() # install OpenCASCADE config file with compile definitions and C/C++ flags ONLY for current configuration install (CODE "string (TOLOWER \"\${CMAKE_INSTALL_CONFIG_NAME}\" CMAKE_INSTALL_CONFIG_NAME_LOWER)") install (CODE "configure_file(\"${CMAKE_BINARY_DIR}/OpenCASCADECompileDefinitionsAndFlags-\${CMAKE_INSTALL_CONFIG_NAME_LOWER}.cmake\" \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADECompileDefinitionsAndFlags-\${CMAKE_INSTALL_CONFIG_NAME_LOWER}.cmake\" COPYONLY)") +# install OpenCASCADE config file with 3rdparty paths +install (CODE "configure_file(\"${CMAKE_BINARY_DIR}/OpenCASCADE3rdparty-\${CMAKE_INSTALL_CONFIG_NAME_LOWER}.cmake\" \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADE3rdparty-\${CMAKE_INSTALL_CONFIG_NAME_LOWER}.cmake\" COPYONLY)") foreach (OCCT_MODULE ${OCCT_MODULES}) if (BUILD_MODULE_${OCCT_MODULE}) diff --git a/adm/templates/OpenCASCADE3rdparty.cmake.in b/adm/templates/OpenCASCADE3rdparty.cmake.in new file mode 100644 index 0000000000..809f095a47 --- /dev/null +++ b/adm/templates/OpenCASCADE3rdparty.cmake.in @@ -0,0 +1,9 @@ +#----------------------------------------------------------------------------- +# +# OpenCASCADE3rdparty.cmake - OpenCASCADE CMake file +# with paths to used 3rdparty libraries and dlls +# +# This file is configured by OpenCASCADE. +# + +@SET_OpenCASCADE_3RDPARTY@ \ No newline at end of file diff --git a/adm/templates/OpenCASCADEConfig.cmake.in b/adm/templates/OpenCASCADEConfig.cmake.in index 4937103b9c..5a7d419857 100644 --- a/adm/templates/OpenCASCADEConfig.cmake.in +++ b/adm/templates/OpenCASCADEConfig.cmake.in @@ -71,6 +71,12 @@ foreach(f ${CONFIG_FILES}) include(${f}) endforeach() +# Import OpenCASCADE paths to used 3rdparty libraries and dlls for each installed configuration. +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/OpenCASCADE3rdparty-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + if (NOT OpenCASCADE_FIND_COMPONENTS) set (OpenCASCADE_FIND_COMPONENTS ${OpenCASCADE_MODULES}) endif () -- 2.39.5