set (INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" CACHE PATH "${INSTALL_DIR_DESCR}")
endif()
-if ("${INSTALL_DIR}" STREQUAL "")
- get_filename_component (CMAKE_BINARY_DIR_PARENT ${CMAKE_BINARY_DIR} DIRECTORY)
- set (INSTALL_DIR "${CMAKE_BINARY_DIR_PARENT}/install" CACHE PATH "${INSTALL_DIR_DESCR}" FORCE)
- message (STATUS "Info: INSTALL_DIR has been set as ${INSTALL_DIR}")
+if (NOT DEFINED CMAKE_INSTALL_PREFIX_PREV)
+ set (CMAKE_INSTALL_PREFIX_PREV "${CMAKE_INSTALL_PREFIX}" CACHE INTERNAL "" FORCE)
+elseif (NOT "${CMAKE_INSTALL_PREFIX_PREV}" STREQUAL "${CMAKE_INSTALL_PREFIX}")
+ # CMAKE_INSTALL_PREFIX has been changed at previous step
+ set (CMAKE_INSTALL_PREFIX_PREV "${CMAKE_INSTALL_PREFIX}" CACHE INTERNAL "" FORCE)
+
+ # INSTALL_DIR is required to be updated
+ set (INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" CACHE PATH "${INSTALL_DIR_DESCR}" FORCE)
+endif()
+
+if (NOT DEFINED INSTALL_DIR_PREV)
+ set (INSTALL_DIR_PREV "${INSTALL_DIR}" CACHE INTERNAL "" FORCE)
+elseif (NOT "${INSTALL_DIR_PREV}" STREQUAL "${INSTALL_DIR}")
+ # INSTALL_DIR has been changed at previous step
+ set (INSTALL_DIR_PREV "${INSTALL_DIR}" CACHE INTERNAL "" FORCE)
+
+ # sync CMAKE_INSTALL_PREFIX with INSTALL_DIR
+ set (CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" CACHE INTERNAL "" FORCE)
+
+ # set CMAKE_INSTALL_PREFIX_PREV to avoid the reset of structure of the install folder
+ set (CMAKE_INSTALL_PREFIX_PREV "${INSTALL_DIR}" CACHE INTERNAL "" FORCE)
+
+ # The structure of install folder should be reset
+ OCCT_CHECK_AND_UNSET (INSTALL_BIN_DIR)
+ OCCT_CHECK_AND_UNSET (INSTALL_SCRIPT_DIR)
+ OCCT_CHECK_AND_UNSET (INSTALL_LIB_DIR)
+ OCCT_CHECK_AND_UNSET (INSTALL_INCLUDE_DIR)
+ OCCT_CHECK_AND_UNSET (INSTALL_OCCT_RESOURCE_DIR)
+ OCCT_CHECK_AND_UNSET (INSTALL_SHARE_DIR)
endif()
# hide CMAKE_INSTALL_PREFIX from a user