CMAKE_OSX_DEPLOYMENT_TARGETΒΆ

Specify the minimum version of the target platform, e.g., macOS or iOS, on which the target binaries are to be deployed.

For builds targeting macOS (CMAKE_SYSTEM_NAME is Darwin), if CMAKE_OSX_DEPLOYMENT_TARGET is not explicitly set, a default is set:

  • If the MACOSX_DEPLOYMENT_TARGET environment variable is non-empty, its value is the default.

  • Otherwise, if using the Xcode generator, and the host's macOS version is older than the macOS SDK (CMAKE_OSX_SYSROOT, if set, or Xcode's default SDK), the host's macOS version is the default.

    Changed in version 4.0: Previously this was done for all generators, not just Xcode.

  • Otherwise, the default is empty.

The effects of CMAKE_OSX_DEPLOYMENT_TARGET depend on the generator:

Xcode

If CMAKE_OSX_DEPLOYMENT_TARGET is set to a non-empty value, it is added to the generated Xcode project as the MACOSX_DEPLOYMENT_TARGET setting. Otherwise, no such setting is added, so Xcode's default deployed target is used, typically based on the SDK version.

Other Generators

If CMAKE_OSX_DEPLOYMENT_TARGET is set to a non-empty value, it is passed to the compiler via the -mmacosx-version-min flag or equivalent. Otherwise, no such flag is added, so the compiler's default deployment target is used.

The value of this variable should be set prior to the first project() or enable_language() command invocation because it may influence configuration of the toolchain and flags. It is intended to be set locally by the user creating a build tree. This variable should be set as a CACHE entry (or else CMake may remove it while initializing a cache entry of the same name) unless policy CMP0126 is set to NEW.

Despite the OSX part in the variable name(s) they apply also to other SDKs than macOS like iOS, tvOS, visionOS, or watchOS.

This variable is ignored on platforms other than Apple.