diff options
author | Brad King <brad.king@kitware.com> | 2008-12-17 14:23:30 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2008-12-17 14:23:30 (GMT) |
commit | d5c1191349778dd1c1d4646b28f8f532ea0bea9e (patch) | |
tree | c7793a162bd62728cde133f3d8877334905b6fcd | |
parent | 625ef26163451686a68b092d672e79c3e2b80e1e (diff) | |
download | CMake-d5c1191349778dd1c1d4646b28f8f532ea0bea9e.zip CMake-d5c1191349778dd1c1d4646b28f8f532ea0bea9e.tar.gz CMake-d5c1191349778dd1c1d4646b28f8f532ea0bea9e.tar.bz2 |
ENH: Use 32-bit and 64-bit Program Files folders
On 64-bit Windows there may be two Program Files folders, one for 32-bit
binaries and one for 64-bit binaries. When we compute
CMAKE_SYSTEM_PREFIX_PATH we should put both folders in the path.
-rw-r--r-- | Modules/Platform/WindowsPaths.cmake | 57 |
1 files changed, 49 insertions, 8 deletions
diff --git a/Modules/Platform/WindowsPaths.cmake b/Modules/Platform/WindowsPaths.cmake index 45ed479..00e3afa 100644 --- a/Modules/Platform/WindowsPaths.cmake +++ b/Modules/Platform/WindowsPaths.cmake @@ -1,15 +1,56 @@ +# Add the program-files folder(s) to the list of installation +# prefixes. +# +# Windows 64-bit Binary: +# ENV{ProgramFiles(x86)} = [C:\Program Files (x86)] +# ENV{ProgramFiles} = [C:\Program Files] +# ENV{ProgramW6432} = <not set> +# (executed from cygwin): +# ENV{ProgramFiles(x86)} = <not set> +# ENV{ProgramFiles} = [C:\Program Files] +# ENV{ProgramW6432} = <not set> +# +# Windows 32-bit Binary: +# ENV{ProgramFiles(x86)} = [C:\Program Files (x86)] +# ENV{ProgramFiles} = [C:\Program Files (x86)] +# ENV{ProgramW6432} = [C:\Program Files] +# (executed from cygwin): +# ENV{ProgramFiles(x86)} = <not set> +# ENV{ProgramFiles} = [C:\Program Files (x86)] +# ENV{ProgramW6432} = [C:\Program Files] +IF(DEFINED "ENV{ProgramW6432}") + # 32-bit binary on 64-bit windows. + # The 64-bit program files are in ProgramW6432. + LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramW6432}") + + # The 32-bit program files are in ProgramFiles. + IF(DEFINED "ENV{ProgramFiles}") + LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramFiles}") + ENDIF() +ELSE() + # 64-bit binary, or 32-bit binary on 32-bit windows. + IF(DEFINED "ENV{ProgramFiles}") + LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramFiles}") + ENDIF() + IF(DEFINED "ENV{ProgramFiles(x86)}") + # 64-bit binary. 32-bit program files are in ProgramFiles(x86). + LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramFiles(x86)}") + ELSEIF(DEFINED "ENV{SystemDrive}") + # Guess the 32-bit program files location. + IF(EXISTS "$ENV{SystemDrive}/Program Files (x86)") + LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH + "$ENV{SystemDrive}/Program Files (x86)") + ENDIF() + ENDIF() +ENDIF() + +# Add the CMake install location. GET_FILENAME_COMPONENT(_CMAKE_INSTALL_DIR "${CMAKE_ROOT}" PATH) GET_FILENAME_COMPONENT(_CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" PATH) +LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "${_CMAKE_INSTALL_DIR}") -# List common installation prefixes. These will be used for all -# search types. +# Add other locations. LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH - # Standard - "$ENV{ProgramFiles}" - - # CMake install location - "${_CMAKE_INSTALL_DIR}" - # Project install destination. "${CMAKE_INSTALL_PREFIX}" |