CMAKE_OSX_SYSROOTΒΆ
Specify the location or name of the macOS platform SDK to be used.
If not set explicitly, the value is initialized by the SDKROOT
environment variable, if set. Otherwise, the value defaults to empty,
and the compiler is expected to choose a default macOS SDK on its own.
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.
In order to pass an explicit macOS SDK via the compiler's -isysroot
flag,
users may configure their build tree with -DCMAKE_OSX_SYSROOT=macosx
,
or export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
in their
environment.
Notes:
macOS compilers in
/usr/bin
, 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 an explicit SDK, as described above, when not building with Homebrew tools.Some Clang compilers have no default macOS SDK selection. For these, if
CMAKE_OSX_SYSROOT
is empty, CMake will automatically pass-isysroot
with the macOS SDK printed byxcrun --show-sdk-path
.
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.