CMake Checking Platform: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
m (→CMake System: Fix missing period) |
No edit summary |
||
Line 2: | Line 2: | ||
== Platform Variables == | == Platform Variables == | ||
CMake sets certain variables to true depending on the current platform and toolchain in use. These always describe the ''target'' platform. | CMake sets certain variables to true depending on the current platform and toolchain in use. These always describe the ''target'' platform. | ||
; UNIX : is TRUE on all UNIX-like OS's, including Apple OS X and ''CygWin'' | ; UNIX : is TRUE on all UNIX-like OS's, including Apple OS X and ''CygWin'' | ||
; WIN32 : is TRUE on Windows. Prior to 2.8.4 this included ''CygWin'' | ; WIN32 : is TRUE on Windows. Prior to 2.8.4 this included ''CygWin'' | ||
; APPLE : is TRUE on Apple systems. Note this does ''not'' imply the system is Mac OS X, only that __APPLE__ is #defined in C/C++ header files. | ; APPLE : is TRUE on Apple systems. Note this does ''not'' imply the system is Mac OS X, only that __APPLE__ is #defined in C/C++ header files. | ||
; MINGW : is TRUE when using the MinGW compiler in Windows | ; MINGW : is TRUE when using the MinGW compiler in Windows | ||
; MSYS : is TRUE when using the MSYS developer environment in Windows | ; MSYS : is TRUE when using the MSYS developer environment in Windows | ||
; CYGWIN : is TRUE on Windows when using the ''CygWin'' version of cmake | ; CYGWIN : is TRUE on Windows when using the ''CygWin'' version of cmake | ||
== CMake System == | == CMake System == | ||
A cleaner and more cross-compiling-compatible way to check the current platform is through the CMAKE_SYSTEM variables. | A cleaner and more cross-compiling-compatible way to check the current platform is through the CMAKE_SYSTEM variables. | ||
; CMAKE_SYSTEM : the complete system name, e.g. "Linux-2.4.22", "FreeBSD-5.4-RELEASE" or "Windows 5.1" | ; CMAKE_SYSTEM : the complete system name, e.g. "Linux-2.4.22", "FreeBSD-5.4-RELEASE" or "Windows 5.1" | ||
; CMAKE_SYSTEM_NAME : The name of the system targeted by the build. The three common values are '''Windows''', '''Darwin''', and '''Linux''', though several others exist, such as '''Android''', '''FreeBSD''', and '''CrayLinuxEnvironment'''. Platforms without an operating system, such as embedded devices, are given '''Generic''' as a system name. | ; CMAKE_SYSTEM_NAME : The name of the system targeted by the build. The three common values are '''Windows''', '''Darwin''', and '''Linux''', though several others exist, such as '''Android''', '''FreeBSD''', and '''CrayLinuxEnvironment'''. Platforms without an operating system, such as embedded devices, are given '''Generic''' as a system name. | ||
; CMAKE_SYSTEM_VERSION : Version of the operating system. Generally the ''kernel'' version. | ; CMAKE_SYSTEM_VERSION : Version of the operating system. Generally the ''kernel'' version. | ||
; CMAKE_SYSTEM_PROCESSOR : the processor name (e.g. "Intel(R) Pentium(R) M processor 2.00GHz") | ; CMAKE_SYSTEM_PROCESSOR : the processor name (e.g. "Intel(R) Pentium(R) M processor 2.00GHz") | ||
; CMAKE_HOST_SYSTEM_NAME : The name of the system hosting the build. Has the same possible values as '''CMAKE_SYSTEM_NAME'''. | ; CMAKE_HOST_SYSTEM_NAME : The name of the system hosting the build. Has the same possible values as '''CMAKE_SYSTEM_NAME'''. | ||
{{CMake/Template/Footer}} |
Revision as of 12:30, 24 April 2018
There are several different ways to check the current system/platform in CMake, and each interacts with cross-compiling in different ways.
Platform Variables
CMake sets certain variables to true depending on the current platform and toolchain in use. These always describe the target platform.
- UNIX
- is TRUE on all UNIX-like OS's, including Apple OS X and CygWin
- WIN32
- is TRUE on Windows. Prior to 2.8.4 this included CygWin
- APPLE
- is TRUE on Apple systems. Note this does not imply the system is Mac OS X, only that __APPLE__ is #defined in C/C++ header files.
- MINGW
- is TRUE when using the MinGW compiler in Windows
- MSYS
- is TRUE when using the MSYS developer environment in Windows
- CYGWIN
- is TRUE on Windows when using the CygWin version of cmake
CMake System
A cleaner and more cross-compiling-compatible way to check the current platform is through the CMAKE_SYSTEM variables.
- CMAKE_SYSTEM
- the complete system name, e.g. "Linux-2.4.22", "FreeBSD-5.4-RELEASE" or "Windows 5.1"
- CMAKE_SYSTEM_NAME
- The name of the system targeted by the build. The three common values are Windows, Darwin, and Linux, though several others exist, such as Android, FreeBSD, and CrayLinuxEnvironment. Platforms without an operating system, such as embedded devices, are given Generic as a system name.
- CMAKE_SYSTEM_VERSION
- Version of the operating system. Generally the kernel version.
- CMAKE_SYSTEM_PROCESSOR
- the processor name (e.g. "Intel(R) Pentium(R) M processor 2.00GHz")
- CMAKE_HOST_SYSTEM_NAME
- The name of the system hosting the build. Has the same possible values as CMAKE_SYSTEM_NAME.