# CMAKE_SYSTEM_NAME

The name of the operating system for which CMake is to build. See the `CMAKE_SYSTEM_VERSION` variable for the OS version.

Note that `CMAKE_SYSTEM_NAME` is not set to anything by default when running in script mode, since it's not building anything.

## System Name for Host Builds

`CMAKE_SYSTEM_NAME` is by default set to the same value as the `CMAKE_HOST_SYSTEM_NAME` variable so that the build targets the host system.

## System Name for Cross Compiling

`CMAKE_SYSTEM_NAME` may be set explicitly when first configuring a new build tree in order to enable cross compiling. In this case the `CMAKE_SYSTEM_VERSION` variable must also be set explicitly.

## System Names Known to CMake

The following is a list of possible values, each associated with corresponding operating systems or environments.

### Apple Platforms

`Darwin`

  Apple stationary operating systems (macOS, OS X, etc.)

`iOS`

  Added in version 3.14.

  Apple mobile phone operating system

`tvOS`

  Added in version 3.14.

  Apple TV operating system

`visionOS`

  Added in version 3.28.

  Apple mixed reality operating system

`watchOS`

  Added in version 3.14.

  Apple watch operating system

### UNIX Platforms

`ADSP`

  Analog Devices Audio Digital Signal Processing

`AIX`

  IBM Unix operating system

`Android`

  Added in version 3.1.

  Android operating system

`ARTOS`

  Added in version 3.4.

  Operating system for microcontrollers

`BeOS`

  Operating system for personal computers (discontinued)

`BlueGeneL`

  Blue Gene/L static environment

`BlueGeneP-dynamic`

  Blue Gene/P dynamic environment

`BlueGeneP-static`

  Blue Gene/P static environment

`BlueGeneQ-dynamic`

  Added in version 3.3.

  Blue Gene/Q dynamic environment

`BlueGeneQ-static`

  Added in version 3.3.

  Blue Gene/Q static environment

`BSDOS`

  BSD operating system (discontinued)

`Catamount`

  Operating system for Cray XT series

`CrayLinuxEnvironment`

  Added in version 3.5.

  Cray Linux Environment

`DragonFly`

  BSD-derived operating system

`eCos`

  Real-time embedded operating system

`Emscripten`

  Added in version 4.2.

  Compiler toolchain to WebAssembly.

`Euros`

  Added in version 3.4.

  Real-time operating system for embedded devices

`FreeBSD`

  FreeBSD operating system

`Fuchsia`

  Added in version 3.8.

  Operating system by Google based on the Zircon kernel

`Generic-ADSP`

  Generic ADSP (Audio DSP) environment

`Generic-ELF`

  Added in version 3.23.

  Generic ELF (Executable and Linkable Format) environment

`Generic`

  Some platforms, e.g. bare metal embedded devices

`GHS-MULTI`

  Added in version 3.3.

  Green Hills Software MULTI environment

`GNU`

  GNU/Hurd-based operating system

`Haiku`

  Unix operating system inspired by BeOS

`HP-UX`

  Hewlett Packard Unix (discontinued)

`Linux`

  All Linux-based distributions

`MirBSD`

  MirOS BSD operating system

`MP-RAS`

  MP-RAS UNIX operating system

`NetBSD`

  NetBSD operating systems

`OHOS`

  Added in version 3.30.

  OpenHarmony family of operating systems (e.g., HarmonyOS)

  Toolchain file can set this value when targeting OpenHarmony operating systems.

`OpenBSD`

  OpenBSD operating systems

`OpenVMS`

  OpenVMS operating system by HP

`OS2`

  Added in version 3.18.

  OS/2 operating system

`OSF1`

  Compaq Tru64 UNIX (formerly DEC OSF/1, Digital Unix) (discontinued)

`QNX`

  Unix-like operating system by BlackBerry

`RISCos`

  RISC OS operating system

`SCO_SV`

  SCO OpenServer 5

`SerenityOS`

  Added in version 3.25.

  Unix-like operating system

`SINIX`

  SINIX operating system

`SunOS`

  Oracle Solaris and all illumos operating systems

`syllable`

  Syllable operating system

`Tru64`

  Compaq Tru64 UNIX (formerly DEC OSF/1) operating system

`ULTRIX`

  Unix operating system (discontinued)

`UNIX_SV`

  SCO UnixWare (pre release 7)

`UnixWare`

  SCO UnixWare 7

`WASI`

  Added in version 3.31.

  WebAssembly System Interface

`Xenix`

  SCO Xenix Unix operating system (discontinued)

### Windows Platforms

`CYGWIN`

  Cygwin environment for Windows

  Cygwin's `cmake` package (`/usr/bin/cmake`) uses system name `CYGWIN`. A non-cygwin CMake on Windows (e.g. `$PROGRAMFILES/CMake/bin/cmake`) uses system name `Windows` even when it runs under a Cygwin environment.

`DOS`

  MS-DOS or compatible

`Midipix`

  Added in version 3.10.

  POSIX-compatible layer for Windows

`MSYS`

  MSYS environment (MSYSTEM=MSYS)

  MSYS2's `msys/cmake` package (`/usr/bin/cmake`) works only under `MSYSTEM=MSYS` environments, with system name `MSYS`. Under other environments like `MSYSTEM=MINGW64`, use another package such as `mingw64/mingw-w64-x86_64-cmake` (`/mingw64/bin/cmake`), which targets `MSYSTEM=MINGW64` with system name `Windows`.

`Windows`

  Windows stationary operating systems

`WindowsCE`

  Windows Embedded Compact

`WindowsKernelModeDriver`

  Added in version 4.1.

  Windows Kernel-Mode Driver

  When building drivers for Kernel-Mode Driver Framework on Windows, toolchain file can set this value. See also the `CMAKE_WINDOWS_KMDF_VERSION` variable.

`WindowsPhone`

  Added in version 3.1.

  Windows mobile phone operating system

`WindowsStore`

  Added in version 3.1.

  Universal Windows Platform applications

### Removed Platforms

The following platforms were once supported by CMake and got removed either due to platform's EOL, or other incompatibilities:

`kFreeBSD`

  Changed in version 4.1: Removed from CMake.

  FreeBSD kernel with a GNU userland