CMAKE_OSX_DEPLOYMENT_TARGET

指定目标平台(例如 macOS 或 iOS)的最低版本,目标二进制文件将在其上部署。

对于针对 macOS (CMAKE_SYSTEM_NAMEDarwin) 构建的项目,如果未显式设置 CMAKE_OSX_DEPLOYMENT_TARGET,则会设置一个默认值。

  • 如果环境变量 MACOSX_DEPLOYMENT_TARGET 非空,则其值将作为默认值。

  • 否则,如果使用 Xcode 生成器,并且主机 macOS 版本早于 macOS SDK(如果设置了 CMAKE_OSX_SYSROOT,则使用其值;否则使用 Xcode 的默认 SDK),则主机 macOS 版本将作为默认值。

    版本 4.0 更改: 之前仅对 Xcode 生成器执行此操作,而并非所有生成器。

  • 否则,默认值为留空。

CMAKE_OSX_DEPLOYMENT_TARGET 的效果取决于生成器

Xcode

如果将 CMAKE_OSX_DEPLOYMENT_TARGET 设置为非空值,则将其添加到生成的 Xcode 项目中,作为 MACOSX_DEPLOYMENT_TARGET 设置。 否则,将不会添加此类设置,因此 Xcode 将使用默认的部署目标,通常基于 SDK 版本。

其他生成器

如果将 CMAKE_OSX_DEPLOYMENT_TARGET 设置为非空值,则它将通过 -mmacosx-version-min 标志或等效标志传递给编译器。 否则,将不会添加此类标志,因此编译器将使用默认的部署目标。

此变量的值应在第一个 project()enable_language() 命令调用之前设置,因为它可能会影响工具链和标志的配置。 它旨在由创建构建树的用户本地设置。 此变量应设置为 CACHE 条目(否则 CMake 可能会在初始化同名缓存条目时将其删除),除非策略 CMP0126 设置为 NEW

尽管变量名中包含 OSX,但它们也适用于 macOS 以外的其他 SDK,例如 iOS、tvOS、visionOS 或 watchOS。

此变量在非 Apple 平台上被忽略。