2

XCodeプロジェクトにいくつかのC++ソースファイル(拡張子は.mm)があります。純粋なC++(objc構文やcocoaランタイムは使用されていません)のものだけをコンパイルし、Android NDKビルド(NDK r8d)でコンパイルしようとしています。問題は、g++が.mmファイルをC++と見なさず、次のように失敗することです。

arm-linux-androideabi-g++: error: Objective-C++ compiler not installed on this system

私は試しました:
1。LOCAL_CPP_EXTENSION:= .mm(Android.mk内)-役に立ちません。
2.カスタムファイル拡張子を受け入れる方法についてg++ドキュメントを検索します-何も見つかりませんでした。

NDK / g ++に.mmファイルを受け入れるように強制する方法を本当に見つけたいのですが、次のような他のアイデアを受け入れることができます。

  1. Androidプロジェクトの場合は.mmを.cppにコピーして名前を変更します-ビルドとバージョン管理が複雑になるため、これは好きではありませんが、機能する可能性のある最も基本的なもののようです。
  2. これを静的ライブラリとしてビルドします(xcodeを使用)-そこに行ってみましたが、どのアーキテクチャーをビルドするのか、またはそれが理にかなっているのかさえわかりませんでした。
  3. その他?

誰かがこれについていくつかの経験やアイデアを持っていますか?ありがとう。

解決策(受け入れられた回答を参照)
LOCAL_CFLAGS + = -x c ++

4

2 に答える 2

2

「 -xc ++」オプションを.mkファイルの$CFLAGS変数に追加します。これにより、GCCはC++コンパイラを使用するように強制されます。

編集:タイプミス、「-c」ではなく「-x」オプション、「cpp」ではなく「c++」でごめんなさい

于 2013-02-19T10:54:53.433 に答える
1

受け入れられた答えにもかかわらず、ファイルの名前を.CPPに変更するのは正しいことだと私は言います。拡張機能をコンテンツと一致させることについて、何がそれほど物議を醸していますか?Xcodeは、C ++ファイルのコンパイルに問題がなく、ボーナスとして、iOS側のObjectiveC++で誤って汚染するのを防ぎます。

于 2013-02-19T16:57:29.373 に答える