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.