Просмотр исходного кода

CPack: Fix NSIS default 64-bit Windows install directory (#14211)

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 <[email protected]>
Inspired-by: İsmail Dönmez <[email protected]>
Brad King 10 лет назад
Родитель
Сommit
ecaee7caca
1 измененных файлов с 8 добавлено и 3 удалено
  1. 8 3
      Modules/CPack.cmake

+ 8 - 3
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}")
 
 # <project>-<major>.<minor>.<patch>-<release>-<platform>.<pkgtype>