XCode 5中的胖库

时间:2013-09-25 16:53:33

标签: iphone xcode xamarin universal-binary

我一直在尝试构建一个静态库,然后在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)中遇到了通用二进制文件的问题?

2 个答案:

答案 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的链接,我做了一些改动,将目标名称与库名称分开。非常感谢!这解决了我的问题!