我一直在尝试构建一个静态库,然后在Xamarin中创建一个绑定项目。一切正常,直到iOS 7出现。我不得不抓住最新版本的本机库并尝试在XCode 5中构建它,但它一直给我带来各种各样的问题。我认为它可能与构建过程有关,或者可能与XCode 5中的某些更改设置有关(对比4),但我不确定。
我正在使用this脚本构建一个通用二进制文件,该二进制文件基于此问题的工作:
Build fat static library (device + simulator) using Xcode and SDK 4+
我注意到的一件事就是之前的旧版iOS 6.1版本的二进制文件(内置在XCode 4中),我的二进制文件大约是24 Mb,现在使用XCode 5,它已经膨胀到接近50 Mb!这让我觉得编译和链接步骤有问题。
有什么想法吗?是否有其他人在XCode 5(vs 4)中遇到了通用二进制文件的问题?
答案 0 :(得分:23)
我正在使用下面的makefile作为我的库,即使使用XCode 5和iOS7 SDK也能完美运行。
XBUILD=/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
PROJECT_ROOT=.
PROJECT=$(PROJECT_ROOT)/GIFLibFrontEnd.xcodeproj
TARGET=GIFLibFrontEnd
all: libUniversal.a
libi386.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphonesimulator -configuration Release clean build
-mv $(PROJECT_ROOT)/build/Release-iphonesimulator/lib$(TARGET).a $@
libArmv7.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch armv7 -configuration Release clean build
-mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@
libArmv7s.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch armv7s -configuration Release clean build
-mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@
libArm64.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch arm64 -configuration Release clean build
-mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@
libUniversal.a: libi386.a libArmv7.a libArmv7s.a libArm64.a
lipo -create -output lib$(TARGET)Universal.a $^
clean:
-rm -f *.a *.dll
-rm -rf build
答案 1 :(得分:1)
这是指向Makefile with the tabs的链接,我做了一些改动,将目标名称与库名称分开。非常感谢!这解决了我的问题!