iOS用FreeType2をビルドする

画像画像

iOS向けにfreetypeを作成する方法については、インターネット上で多くのメモがあります。

これらのノートはすべて、共通の特性によって結合されています-それらは機能しません。

実際には、すべての命令はライブラリをビルドするためにgccで動作しますが、Xcode 5からはgccはパッケージに含まれておらず、iOS用にビルドするにはclangを使用する必要があります。

正しくコンパイルする方法に関するメモはありません。

この不正を修正してください。





組立準備



Xcodeを既にダウンロードして設定していることを前提としています

Freetypeはsourceforgeに基づいており、そこから取得します。

結果のアーカイブは、展開することを忘れないでください。



ユニバーサルライブラリを構築するには、異なるパラメータでライブラリのコンパイルを5回繰り返す必要があります。

すべての命令は、freetypeルートディレクトリから実行されます。



i386




$ ./configure --enable-static = yes --enable-shared = no CC = / Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / cc CFLAGS = "-arch i386 -Wno -extended-offsetof -miphoneos-version-min = 4.2 -I / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneSimulator.platform / Developer / SDKs / iPhoneSimulator7.1.sdk / usr / include -isysroot / Applications / Xcode .app /コンテンツ/開発者/プラットフォーム/ iPhoneSimulator.platform /開発者/ SDK / iPhoneSimulator7.1.sdk "CPP = / Applications / Xcode.app /コンテンツ/開発者/ツールチェーン/ XcodeDefault.xctoolchain / usr / bin / cpp AR = /アプリケーション/ Xcode.app /コンテンツ/開発者/ツールチェーン/ XcodeDefault.xctoolchain / usr / bin / ar LDFLAGS = "-arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/ iPhoneSimulator7.1.sdk -miphoneos-version-min = 4.2 "

$ make


これらのコマンドを使用して、i386アーキテクチャ用のビルドをセットアップし、ライブラリをビルドします。 結果のライブラリはobjs / .libs / libfreetype.aディレクトリに配置されます

結果のライブラリの名前を変更し、ルートにコピーします。 アセンブリの最後のステップで必要になります。



$ cp objs / .libs / libfreetype.a libfreetype-i386.a



x86_64




同様に、x86_64でビルドし、make cleanコマンドを追加して、前のアセンブリの結果を取り除きます



$ ./configure --enable-static = yes --enable-shared = no CC = / Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / cc CFLAGS = "-arch x86_64 -Wno -extended-offsetof -miphoneos-version-min = 4.2 -I / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneSimulator.platform / Developer / SDKs / iPhoneSimulator7.1.sdk / usr / include -isysroot / Applications / Xcode .app /コンテンツ/開発者/プラットフォーム/ iPhoneSimulator.platform /開発者/ SDK / iPhoneSimulator7.1.sdk "CPP = / Applications / Xcode.app /コンテンツ/開発者/ツールチェーン/ XcodeDefault.xctoolchain / usr / bin / cpp AR = /アプリケーション/ Xcode.app /コンテンツ/開発者/ツールチェーン/ XcodeDefault.xctoolchain / usr / bin / ar LDFLAGS = "-arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/ iPhoneSimulator7.1.sdk -miphoneos-version-min = 4.2 "; make clean; make

$ cp objs / .libs / libfreetype.a libfreetype-x86_64.a





armv7


armv7は、iPhone 3GS、iPhone 4、iPhone 4Sで使用されています。 クロスコンパイル用のパラメーターを追加します。



$ ./configure --host = arm-apple-darwin --enable-static = yes --enable-shared = no CC = / Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / cc CFLAGS = "-arch armv7 -pipe -std = c99 -Wno-extended-offsetof -Wno-trigraphs -fpascal-strings -O2 -Wreturn-type -Wunused-variable -fmessage-length = 0 -fvisibility = hidden -miphoneos- version-min = 4.2 -I / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS7.1.sdk / usr / include -isysroot /Applications/Xcode.app/Contents/Developer/プラットフォーム/ iPhoneOS.platform /開発者/ SDK / iPhoneOS7.1.sdk "AR = / Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / ar LDFLAGS ="-arch armv7 -isysroot / Applications /Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -miphoneos-version-min = 4.2 "

$ make clean; make

$ cp objs / .libs / libfreetype.a libfreetype-arm7.a




armv7s


armv7sは、iPhone 5、iPhone 5Sで使用されています。 構成は最小限です。



$ ./configure --host = arm-apple-darwin --enable-static = yes --enable-shared = no CC = / Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / cc CFLAGS = "-arch armv7s -pipe -std = c99 -Wno-extended-offsetof -Wno-trigraphs -fpascal-strings -O2 -Wreturn-type -Wunused-variable -fmessage-length = 0 -fvisibility = hidden -miphoneos- version-min = 5.0 -I / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS7.1.sdk / usr / include -isysroot /Applications/Xcode.app/Contents/Developer/プラットフォーム/ iPhoneOS.platform /開発者/ SDK / iPhoneOS7.1.sdk "AR = /アプリケーション/ Xcode.app /コンテンツ/開発者/ツールチェーン/ XcodeDefault.xctoolchain / usr / bin / ar LDFLAGS ="-arch armv7s -isysroot /アプリケーション/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -miphoneos-version-min = 5.0 "

$ make clean; make

$ cp objs / .libs / libfreetype.a libfreetype-arm7s.a




arm64


この執筆時点で、arm64は最新のアーキテクチャです。



$ ./configure --host = arm-apple-darwin --enable-static = yes --enable-shared = no CC = / Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / cc CFLAGS = "-arch arm64 -pipe -std = c99 -Wno-extended-offsetof -Wno-trigraphs -fpascal-strings -O2 -Wreturn-type -Wunused-variable -fmessage-length = 0 -fvisibility = hidden -miphoneos- version-min = 6.0 -I / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS7.1.sdk / usr / include -isysroot /Applications/Xcode.app/Contents/Developer/プラットフォーム/ iPhoneOS.platform /開発者/ SDK / iPhoneOS7.1.sdk "AR = /アプリケーション/ Xcode.app /目次/開発者/ツールチェーン/ XcodeDefault.xctoolchain / usr / bin / ar LDFLAGS ="-arch arm64 -isysroot /アプリケーション/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -miphoneos-version-min = 6.0 "

$ make clean; make

$ cp objs / .libs / libfreetype.a libfreetype-arm64.a




重要です


iPhoneOS7.1.sdkを、現在インストールされているSDKのバージョンに変更することを忘れないでください。 執筆時点では7.1が現在のバージョンですが、頻繁に更新されるため、このマニュアルを読むまでにバージョンがすでに変更されている可能性があります。



ユニバーサルライブラリを構築する


ルートには5つのライブラリがあります。

それらを1つのユニバーサルライブラリに収集する必要があります。 これを行うには、リポツールを使用します。



$ lipo -create -output libfreetype.a libfreetype-i386.a libfreetype-x86_64.a libfreetype-arm7.a libfreetype-arm7s.a libfreetype-arm64.a


さて、ルートには待望のlibfreetype.aがあり、必要なすべてのアーキテクチャをサポートしています。



まあ、それだけです。 結果のライブラリをXcodeプロジェクトに追加して、作業します!

頑張って



All Articles