There are several different ways to check the current system/platform in
CMake, and each interacts with cross-compiling in different ways.
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
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++
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
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.
This page was initially populated by conversion from its original location in another wiki.