web-dev-qa-db-ja.com

Android NDK:gccに追加のインクルードディレクトリを使用させる方法

簡単な質問(Android NDK r6とcygwinを使用していますが、これはmakefileとgccに関する質問です)ディレクトリーmylib_v_1 /の下のライブラリーをjni /ディレクトリーの下に置いたとします。Mylib次のように構成されています:

mylib_v_1
   mylib
      include

Includeディレクトリの下には、myinc1.hppとmyinc2.hppの2つのファイルがあります。 myinc1.hppには次のような行があります。

#include <mylib/myinc2.hpp>

私の.cppファイルのjni /ディレクトリの下に、次の行があります。

#include <mylib/myinc1.hpp>

追加のインクルードディレクトリとして、gccが使用することをgccに知らせるために、Android.mk(または他に設定する必要があるファイル)をセットアップします。#includeをブラケットで使用するために、jni/mylib_v_1 /を使用します(2つではなく)。ファイル、私の実際のケースでは、ブラケット表記で他の多くの.hppを含む多くの.hppがあります)。

これどうやってするの?

どうも。

Ps。 .cppファイルで、次のようにインクルードを変​​更した場合:

#include "mylib/myinc1.hpp"

gccはmyinc1.hppを見つけますが、処理中に2番目のインクルードを見つけます。

#include  <mylib/myinc2.hpp>

そして、ファイルmyinc2.hppが見つからないと言って、そこで停止します。

21
Luke

オプション1:

選択したモジュール内のAndroid.mkに次のいずれかの行を追加します。

   LOCAL_C_INCLUDES := /path/to/your/includes # ignore previous includes
                                              # OR
   LOCAL_C_INCLUDES += /path/to/your/includes # preserve previous includes

必要に応じて、「/ path/to/your/includes」を指す環境変数を作成し、次のように含めることができます。

   LOCAL_C_INCLUDES := $(MYLIB_INCLUDES_PATH) # ignore previous includes
                                              # OR
   LOCAL_C_INCLUDES += $(MYLIB_INCLUDES_PATH) # preserve previous includes

オプション2:

  1. すべてのヘッダーファイルを含む完全なフォルダー(mylib)をプロジェクトの「jni」フォルダーにコピーします。

  2. 選択したモジュール内のAndroid.mkに次の行を追加します。

    LOCAL_C_INCLUDES := $(LOCAL_PATH)/mylib
    

    または

    LOCAL_C_INCLUDES += $(LOCAL_PATH)/mylib
    

以前のインクルードがあるかどうかによって異なります。

オプション3:

Eclipse用のCDTプラグインをインストールし、プロジェクトのインクルードパスへの「mylib」ディレクトリへの絶対パスを追加します。これは、必要なすべての手順を示す優れたチュートリアルです。

http://mhandroid.wordpress.com/2011/01/23/using-Eclipse-for-Android-cc-development/

27
Ivo

次を使用して、Android.mkにCインクルードパスを追加できます。

common_CFLAGS := -Ijni/mylib/include

追加のパスには、別の-Iオプションが必要です。

3
Burton Samograd