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プロジェクトに追加して、作業します!
頑張って

Source: https://habr.com/ru/post/J216759/


All Articles