我正在使用 Xcode 构建旧代码并指定SDKROOT=/Developer/SDKs/MacOSX"${HOST_VERSION}".sdk/
我想为系统上预装(?)的最新 SDK 指定 SDKROOT。例如,我10.8
已经使用了,我想SDKROOT
用 -syslibroot 指定,但/Developer/SDKs/
. 如果我应该完全忽略 syslibrootSDK_VERSION == HOST_VERSION
吗?
较新的 Xcode 版本在 Xcode.app 包中包含 SDK,例如
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
您可以通过运行获得已安装 SDK 的列表及其路径
xcodebuild -sdk -version
从命令行。
如果您已经安装了“命令行工具”(Xcode Preferences -> 下载 -> 组件),那么在没有“-syslibroot”的情况下进行编译应该等同于针对最新的 SDK 进行编译。
请参阅“命令行工具”包的帮助:
下载此软件包会将核心命令行工具和系统头文件的副本安装到系统文件夹中,包括 LLVM 编译器、链接器和构建工具。
如另一个stackoverflow问题所述:
xcrun --sdk macosx --show-sdk-path
有了xcodebuild -version -sdk macosx10.7 Path
您可以获得 OS X 10.7 SDK 的路径。${SDK_VERSION}
您可以${HOST_VERSION}
根据需要替换 10.7 。我不知道获取 OS X 版本的命令,该命令可用于获取与当前运行的 OS X 版本匹配的 SDK 的路径。
注意:要xcodebuild
正常工作,用户必须已xcode-select
正确配置,例如xcode-select -switch /Application/Xcode.app
.
CommandLineTools 已过时,重新安装命令行工具解决了这个问题:
xcode-select --install