CMAKE_OSX_SYSROOT¶
指定要使用的 macOS 平台 SDK 的位置或名称。
如果未显式设置,则该值将由 SDKROOT
环境变量初始化(如果已设置)。否则,该值默认为空,并且编译器会自行选择默认的 macOS SDK。
版本 4.0 中已更改: 默认值现在为空。以前,默认值是根据 CMAKE_OSX_DEPLOYMENT_TARGET
或主机平台计算得出的。
为了通过编译器的 -isysroot
标志传递显式的 macOS SDK,用户可以使用 -DCMAKE_OSX_SYSROOT=macosx
配置其构建树,或者在环境中 export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
。
注意事项
位于
/usr/bin
的 macOS 编译器在未调用-isysroot
时,会在系统 SDK 路径之前搜索/usr/local/include
中的头文件,这与许多平台的约定一致。安装在/usr/local
的 macOS-x86_64 主机上的 Homebrew 用户,在使用 Homebrew 工具构建时,应如上所述传递一个显式 SDK。某些 Clang 编译器没有默认的 macOS SDK 选择。对于这些编译器,如果
CMAKE_OSX_SYSROOT
为空,CMake 将自动传递-isysroot
,并使用xcrun --show-sdk-path
打印的 macOS SDK。
此变量的值应在第一次调用 project()
或 enable_language()
命令之前设置,因为它可能会影响工具链和标志的配置。它打算由创建构建树的用户本地设置。此变量应设置为 CACHE
条目(否则 CMake 可能会在初始化同名缓存条目时将其删除),除非策略 CMP0126
设置为 NEW
。
尽管变量名中包含 OSX
,但它们也适用于 macOS 以外的其他 SDK,例如 iOS、tvOS、visionOS 或 watchOS。
此变量在非 Apple 平台上被忽略。