15

我一直在尝试构建一个静态库,然后在 Xamarin 中创建一个绑定项目。在 iOS 7 发布之前,一切都运行良好。我不得不获取最新版本的本地库并尝试在 XCode 5 中构建它,但它给我带来了各种各样的问题。我认为这可能与构建过程或 XCode 5(与 4)中的某些更改设置有关,但我不确定。

我正在使用这个脚本来构建一个基于这个问题的工作的通用二进制文件:

使用 Xcode 和 SDK 4+ 构建胖静态库(设备 + 模拟器)

我确实注意到的一件事是,在我的二进制文件的旧 iOS 6.1 版本(内置于 XCode 4)中,我的二进制文件大约是 24 Mb,现在使用 XCode 5,它膨胀到几乎 50 Mb!这让我认为编译和链接步骤有问题。

有任何想法吗?有没有其他人在 XCode 5(vs 4)中遇到过通用二进制文件的问题?

4

2 回答 2

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
于 2013-09-26T14:21:55.477 回答
1

这是一个带有选项卡的 Makefile的链接,我做了一些更改以将目标名称与库名称分开。非常感谢!这解决了我的问题!

于 2014-07-19T06:02:38.497 回答