使用旧版 MacOs SDK 构建 Poco 库

Building Poco libraries with legacy MacOs SDK

我更新了 Xcode 它也更新了 MacOS SDK。我需要使用旧版 SDK 构建 Poco 以支持旧版 MacOS。我想使用 MacOS 版本 10.11 进行构建。我已经下载了旧版 MacOs SDK,并想用某种标志提供它的路径。

我的构建命令如下所示:

./configure --omit=Data/ODBC,Data/MySQL,Zip,JSON,MongoDB,PageCompiler,PageCompiler/File2Page,CppUnit --no-tests --no-samples --cflags=-fPIC --sqlite-thread-safe=1 --include-path=$(pwd)/$(openssldir)/$(opensslincdirname) --library-path=$(pwd)/$(openssldir) && \
make clean && \
make 

我已经尝试添加标志:

CFLAGS="-isysroot ~/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.11

为了检查构建的库是否使用正确的 SDK 构建,我使用了 otool 命令:(这应该是这样的)

otool -l filename.dylib

 cmd LC_VERSION_MIN_MACOSX
 cmdsize 16
 version 10.8
 sdk 10.11

对于 xcodeproject 这有效:

xcodebuild -sdk macosx10.11 -project projectname.xcodeproj

在测试了多个不同的标志后,我找到了一个按预期工作的解决方案。

下面是带有正确 MACOS SDK 参考的相同 make 命令:

./configure --omit=Data/ODBC,Data/MySQL,Zip,JSON,MongoDB,PageCompiler,PageCompiler/File2Page,CppUnit --no-tests --no-samples --cflags=-fPIC --sqlite-thread-safe=1 --include-path=$(pwd)/$(openssldir)/$(opensslincdirname) --library-path=$(pwd)/$(openssldir) && \
make clean && \
make MACOSX_DEPLOYMENT_TARGET=10.8 MACOSX_SDK_VERSION_MIN=10.9 SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk

我从 https://github.com/devernay/xcodelegacy 下载旧版 MacOS SDK 并将其放入 Xcode SDK 文件夹。值得注意的是,更新 XCode 时可能会清除此文件夹,因此使用指向 sdk 目录的符号链接并将旧版 SDK 保留在其他地方可能是有意义的。