2013-09-25 11 views
15

Statik bir kitaplık oluşturmaya çalışıyorum ve Xamarin'deki bir bağlama projesi oluşturmaya çalışıyorum. IOS 7'ye kadar her şey iyi çalışıyordu. Yerel kütüphanenin en son sürümünü almam ve XCode 5'de kurmayı denemeliydim, ama bana her türlü problemi veriyordu. Ben düşünün, bu işlem işlemi veya XCode 5'de (vs 4) bazı değiştirilmiş ayarlarla ilgili olabilir, ancak emin değilim.XCode'daki yağ kitaplıkları 5

bu söz konusu çalışmanın temel alan evrensel bir ikili oluşturmak için this senaryoyu kullanıyordum

:

Build fat static library (device + simulator) using Xcode and SDK 4+

bir şey yaptım uyarıdır bu benim ikili eski iOS 6.1 sürümünde, önceki (XCode 4'te yerleşik), ikili sistemim yaklaşık 24 Mb'ydı, şimdi XCode 5 ile neredeyse 50 Mb'ye çıktı! Bu, derleme ve bağlantı adımında bir sorun olduğunu düşünmeme neden oluyor.

Herhangi bir fikrin var mı? XCode 5 (vs 4) 'de evrensel binary'ler ile başka herhangi bir problemle karşılaştı mı?

cevap

23

Kitaplığım için aşağıdaki makefile kullanıyorum ve XCode 5 ve iOS7 SDK ile bile kusursuz çalışıyor.

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 [email protected] 

libArmv7.a: 
    $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch armv7 -configuration Release clean build 
    -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a [email protected] 

libArmv7s.a: 
    $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch armv7s -configuration Release clean build 
    -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a [email protected] 

libArm64.a: 
    $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch arm64 -configuration Release clean build 
    -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a [email protected] 

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

Lütfen XCode cehaletimi affedin (bu yüzden Xamarin kullanıyorum) ama bir make dosyası nasıl kurarım? Kullandığım komut dosyası, XCode projemde "yapı fazları" na ekledim. Bu benzer mi? Yoksa bunu kullanmanın başka bir hile var mı? –

+0

Makefile'mizi doğrudan kütüphane proje klasörünüze bırakabilmeniz ve PROJE ve HEDEF değişkenlerini projenize uyacak ve gitmek için iyi olacak şekilde ayarlayabilmeniz gerekir. Ben sadece bir dosya "makefile" oluşturmak ve makefile içeriğini yapıştırmak ve ayarlamak demek. –

+0

Ve sonra "make" koşmak için unutmayın :) –

1

Burada Makefile with the tabs için bir bağlantı, ve ben kütüphane adından hedef adını ayırmak için biraz değişiklik yaptık. Bunun için çok teşekkürler! Bu benim problemimi çözdü!