Android NDK:如何让gcc使用额外的include目录

时间:2011-09-08 13:41:46

标签: gcc makefile android-ndk

一个简单的问题(我正在使用android NDK r6和cygwin,但这是关于makefile和gcc的问题)。假设我在dni mylib_v_1 /下面的jni /目录下放了一个库。 Mylib的结构如下:

mylib_v_1
   mylib
      include

在include目录下有两个文件myinc1.hpp和myinc2.hpp。在myinc1.hpp中有一行:

#include <mylib/myinc2.hpp>

在我的.cpp文件中,在jni /目录下,有以下行:

#include <mylib/myinc1.hpp>

我想设置Android.mk(或者需要设置其他文件)以便让gcc知道使用,作为额外的包含目录,jni / mylib_v_1 /以便使用带括号的#include(而不是两个文件,在我的实际案例中有很多.hpp包含很多其他.hpp和括号表示法。)

我该怎么做?

THX。

聚苯乙烯。 如果在.cpp文件中我以这种方式更改include:

#include "mylib/myinc1.hpp"

gcc找到myinc1.hpp但是,在处理它时,它会找到第二个包含:

#include  <mylib/myinc2.hpp>

然后停在那里,说它无法找到文件myinc2.hpp。

2 个答案:

答案 0 :(得分:26)

选项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. 取决于是否有先前的包含。

    选项3:

    安装Eclipse的CDT插件,并将“mylib”目录的绝对路径添加到项目的包含路径中。这是一个很棒的教程,显示了所有必要的步骤。

    http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

答案 1 :(得分:3)

您可以使用以下方法在Android.mk中添加C include路径:

common_CFLAGS := -Ijni/mylib/include

任何其他路径都需要另一个-I选项。