From d573adcf38d586fba68cde1a041ea9a3dd2c261f Mon Sep 17 00:00:00 2001 From: ibs Date: Thu, 24 Dec 2015 18:22:35 +0300 Subject: [PATCH] INSTALL_DIR is synced with CMAKE_INSTALL_PREFIX . Change of any of these vars resets the structure of the install folder --- CMakeLists.txt | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bc670ec99..e2dad95413 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,10 +72,35 @@ if (NOT DEFINED INSTALL_DIR) 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