使用传统的MacOs SDK构建Poco库

时间:2017-12-28 23:08:59

标签: macos poco-libraries

我更新了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

1 个答案:

答案 0 :(得分:0)

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

以下是与适当的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保留在其他位置可能是有意义的。