CMAKE_OSX_SYSROOT — CMake 4.0.1 Documentation

# 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.