]> SALOME platform Git repositories - plugins/ghs3dplugin.git/commitdiff
Salome HOME
CMake: improved reloading of dependent CMake targets in Config file to
authormpa <mpa@opencascade.com>
Tue, 5 Nov 2013 12:42:13 +0000 (12:42 +0000)
committermpa <mpa@opencascade.com>
Tue, 5 Nov 2013 12:42:13 +0000 (12:42 +0000)
account for COMPONENTS.

CMakeLists.txt
SalomeGHS3DPLUGINConfig.cmake.in

index d640fe438e287c9c16d2e2f2c622bb26cebf93ae..f2963ec23724ab352c5fa9510c55135c2c30e9fa 100755 (executable)
@@ -232,6 +232,10 @@ EXPORT(TARGETS ${_${PROJECT_NAME}_exposed_targets}
 SET(SMESH_ROOT_DIR "${SMESH_ROOT_DIR}")
  
 SET(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/include")
+
+# Build variables that will be expanded when configuring Salome<MODULE>Config.cmake:
+# SALOME_CONFIGURE_PREPARE() #For use in the future
+
 CONFIGURE_PACKAGE_CONFIG_FILE(${PROJECT_NAME}Config.cmake.in 
     ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
     INSTALL_DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}"
index c663f1b2a16561e534b38f4a642d51a6d429645e..a3958976d77e8c9679abe624e5c2b103acdded0a 100644 (file)
@@ -64,21 +64,32 @@ SET_AND_CHECK(SMESH_ROOT_DIR_EXP "@PACKAGE_SMESH_ROOT_DIR@")
 # For all prerequisites, load the corresponding targets if the package was used 
 # in CONFIG mode. This ensures dependent projects link correctly
 # without having to set LD_LIBRARY_PATH:
-SET(_PREREQ)
-SET(_PREREQ_CONFIG_DIR)
+SET(_PREREQ @_PREREQ_LIST@)
+SET(_PREREQ_CONFIG_DIR @_PREREQ_DIR_LIST@)
+SET(_PREREQ_COMPONENTS "@_PREREQ_COMPO_LIST@")
 LIST(LENGTH _PREREQ_CONFIG_DIR _list_len)
-# Another CMake stupidity - FOREACH(... RANGE r) generates r+1 numbers ...
-MATH(EXPR _range "${_list_len}-1")
-FOREACH(_p RANGE ${_range})
-  LIST(GET _PREREQ            ${_p} _pkg    )
-  LIST(GET _PREREQ_CONFIG_DIR ${_p} _pkg_dir)
-  IF(_pkg_dir)
-     MESSAGE(STATUS "===> Reloading targets from ${_pkg} ...")
-     FIND_PACKAGE(${_pkg} REQUIRED NO_MODULE 
+IF(NOT _list_len EQUAL 0)
+  # Another CMake stupidity - FOREACH(... RANGE r) generates r+1 numbers ...
+  MATH(EXPR _range "${_list_len}-1")
+  FOREACH(_p RANGE ${_range})  
+    LIST(GET _PREREQ            ${_p} _pkg    )
+    LIST(GET _PREREQ_CONFIG_DIR ${_p} _pkg_dir)
+    LIST(GET _PREREQ_COMPONENTS ${_p} _pkg_compo)
+    MESSAGE(STATUS "===> Reloading targets from ${_pkg} ...")
+    IF(NOT _pkg_compo)
+      FIND_PACKAGE(${_pkg} REQUIRED NO_MODULE 
           PATHS "${_pkg_dir}" 
           NO_DEFAULT_PATH)
-  ENDIF()
-ENDFOREACH()
+    ELSE()
+      STRING(REPLACE "," ";" _compo_lst "${_pkg_compo}")
+      MESSAGE(STATUS "===> (components: ${_pkg_compo})")
+      FIND_PACKAGE(${_pkg} REQUIRED NO_MODULE
+          COMPONENTS ${_compo_lst} 
+          PATHS "${_pkg_dir}"
+          NO_DEFAULT_PATH)
+    ENDIF()
+  ENDFOREACH()
+ENDIF()
 
 # Installation directories
 SET(SALOME_INSTALL_BINS "@SALOME_INSTALL_BINS@")