diff --git a/Modules/GNUInstallDirs.cmake b/Modules/GNUInstallDirs.cmake index 7b45d49bd4..ff9c11a9d7 100644 --- a/Modules/GNUInstallDirs.cmake +++ b/Modules/GNUInstallDirs.cmake @@ -279,7 +279,10 @@ function(_GNUInstallDirs_cache_path var description) # the old default, reset the value to the new default if(${cmake_install_var} STREQUAL "$CACHE{${cmake_install_var}}" AND ${cmake_install_var} STREQUAL last_default) - set(${cmake_install_var} "${default}" CACHE PATH "${full_description}" FORCE) + set(full_description "${description} (${default})") + set_property(CACHE ${cmake_install_var} PROPERTY TYPE PATH) + set_property(CACHE ${cmake_install_var} PROPERTY VALUE "${default}") + set_property(CACHE ${cmake_install_var} PROPERTY HELPSTRING "${full_description}") endif() # Continue to normal flow endif() diff --git a/Tests/RunCMake/GNUInstallDirs/ExplicitDefaults-stdout.txt b/Tests/RunCMake/GNUInstallDirs/ExplicitDefaults-stdout.txt new file mode 100644 index 0000000000..cfd7fc2d1b --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/ExplicitDefaults-stdout.txt @@ -0,0 +1,6 @@ +-- CMAKE_INSTALL_BINDIR='bin' +-- CMAKE_INSTALL_INCLUDEDIR='include' +-- CMAKE_INSTALL_LIBDIR='lib' +-- CMAKE_INSTALL_FULL_BINDIR='/usr/local/bin' +-- CMAKE_INSTALL_FULL_INCLUDEDIR='/usr/local/include' +-- CMAKE_INSTALL_FULL_LIBDIR='/usr/local/lib' diff --git a/Tests/RunCMake/GNUInstallDirs/ExplicitDefaults.cmake b/Tests/RunCMake/GNUInstallDirs/ExplicitDefaults.cmake new file mode 100644 index 0000000000..9aca043cd1 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/ExplicitDefaults.cmake @@ -0,0 +1,15 @@ +set(CMAKE_SIZEOF_VOID_P 8) +set(CMAKE_LIBRARY_ARCHITECTURE "arch") +set(CMAKE_INSTALL_PREFIX "/usr/local") +include(GNUInstallDirs) +set(dirs + BINDIR + INCLUDEDIR + LIBDIR + ) +foreach(dir ${dirs}) + message(STATUS "CMAKE_INSTALL_${dir}='$CACHE{CMAKE_INSTALL_${dir}}'") +endforeach() +foreach(dir ${dirs}) + message(STATUS "CMAKE_INSTALL_FULL_${dir}='${CMAKE_INSTALL_FULL_${dir}}'") +endforeach() diff --git a/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake b/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake index d26e900663..cd0ffa8143 100644 --- a/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake +++ b/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake @@ -39,3 +39,9 @@ endblock() run_cmake(GetAbs) run_cmake(NoSystem) + +run_cmake_with_options(ExplicitDefaults + -DCMAKE_INSTALL_BINDIR=bin + -DCMAKE_INSTALL_INCLUDEDIR=include + -DCMAKE_INSTALL_LIBDIR=lib +)