CMAKE_OSX_SYSROOT

Specify the location or name of the macOS platform SDK to be used. CMake uses this value to compute the value of the -isysroot flag or equivalent and to help the find_* commands locate files in the SDK.

If not set explicitly, the value is initialized by the SDKROOT environment variable, if set. Otherwise, the value defaults to empty, so no explicit -isysroot flag is passed, and the compiler's default sysroot is used.

Changed in version 4.0: The default is now empty. Previously a default was computed based on the CMAKE_OSX_DEPLOYMENT_TARGET or the host platform.

Note

Xcode's compilers, when not invoked with -isysroot, search for headers in /usr/local/include before system SDK paths, matching the convention on many platforms. Users on macOS-x86_64 hosts with Homebrew installed in /usr/local should pass -DCMAKE_OSX_SYSROOT=macosx, or export SDKROOT=macosx, when not building with Homebrew tools.

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.