From ecaee7caca4e3d4528e643736c0620e785e84153 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 4 Feb 2015 15:09:18 -0500 Subject: [PATCH] CPack: Fix NSIS default 64-bit Windows install directory (#14211) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When targeting Windows with a 64-bit architecture, use "$PROGRAMFILES64" to get the Program Files folder. Use CMAKE_SIZEOF_VOID_P to check for the architecture size instead of CMAKE_CL_64 because the latter is not defined for all compilers. Inspired-by: Hugh Sorby Inspired-by: İsmail Dönmez --- Modules/CPack.cmake | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake index 35259c493..ce1536ef9 100644 --- a/Modules/CPack.cmake +++ b/Modules/CPack.cmake @@ -352,8 +352,8 @@ if(CPACK_NSIS_MODIFY_PATH) endif() set(__cpack_system_name ${CMAKE_SYSTEM_NAME}) -if(${__cpack_system_name} MATCHES Windows) - if(CMAKE_CL_64) +if(__cpack_system_name MATCHES "Windows") + if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(__cpack_system_name win64) else() set(__cpack_system_name win32) @@ -363,7 +363,12 @@ cpack_set_if_not_set(CPACK_SYSTEM_NAME "${__cpack_system_name}") # Root dir: default value should be the string literal "$PROGRAMFILES" # for backwards compatibility. Projects may set this value to anything. -set(__cpack_root_default "$PROGRAMFILES") +# When creating 64 bit binaries we set the default value to "$PROGRAMFILES64" +if("x${__cpack_system_name}" STREQUAL "xwin64") + set(__cpack_root_default "$PROGRAMFILES64") +else() + set(__cpack_root_default "$PROGRAMFILES") +endif() cpack_set_if_not_set(CPACK_NSIS_INSTALL_ROOT "${__cpack_root_default}") # -..--.