私はlibobjc2の存在を認識しており、GCCではなくclangを使用する必要があると考えていますが、コンパイルプロセスの違いに関する基本的な指示が見つかりません.
Ubuntu で Objective-C 2.0を使用して GNUstep を取得、構成、コンパイル、および使用するための明示的な段階的な指示を誰でも与えることができますか?
私はlibobjc2の存在を認識しており、GCCではなくclangを使用する必要があると考えていますが、コンパイルプロセスの違いに関する基本的な指示が見つかりません.
Ubuntu で Objective-C 2.0を使用して GNUstep を取得、構成、コンパイル、および使用するための明示的な段階的な指示を誰でも与えることができますか?
GNUStep ObjC2 の FAQは既に参照されているので、見たことがあると思います。しかし、私はこれを指摘したいと思います:
より高度な機能については、現在 Clang でコンパイルする場合にのみサポートされており、GNUstep ランタイムが必要になります。これは現在、製品化の準備ができているとは見なされていません。GCC ランタイムのドロップイン代替品として機能するはずですが、一部の高度な機能は十分にテストされていません。
また、FAQには次のように記載されています。
最近のバージョンの GCC を使用してコードをコンパイルしている場合は、コンパイラに付属の Objective-C ランタイム ライブラリのコピーが必要です。
-fobjc-nonfragile-abi フラグを指定してコンパイルすると、新しい ABI が使用されます。これは、GNUstep ランタイムでのみサポートされています。これにより、次が追加されます。
- プロパティのイントロスペクション
- オプションのプロトコル メソッドのイントロスペクション
- 壊れにくいインスタンス変数
- 転送プロキシのサポート
したがって、GCC を介して古い機能を探している場合は、このチュートリアルと同様に、このチュートリアルがうまく機能します。Clang が ( libobjc2を介して) 提供する機能を使用してこれを実行しようとしていることを明示的に示しました。Clangには独自のドキュメントが用意されています。
Clang のリリースを入手してセットアップすることは、かなり簡単なことのように思えます。LLVM Getting Startedドキュメントは非常に堅牢で (完全なドキュメント アーカイブはこちら)、バックエンドのセットアップと適切なコンパイルに関する洞察を提供するはずです。予想されるビルド手順に関する追加の洞察については、こちらを参照してください。
ただし、Clang での Objective-C アプリケーションのコンパイルは、この記事の執筆時点では非常に文書化されておらず、テストされていないようです。機能が利用可能になり、コードベースが安定するにつれて、より多くのユーザー ドキュメントが公開されると思います。
GNUstep Wikiによると、コードを-fblocks
andでコンパイルするだけで済みます-fobjc-nonfragile-abi
。次に、コードで言語機能を使用するだけです。