一个简单的问题(我正在使用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。
答案 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:
将包含所有标题文件的整个文件夹(mylib)复制到项目的“jni”文件夹中。
将以下行添加到您选择的模块中的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/
答案 1 :(得分:3)
您可以使用以下方法在Android.mk中添加C include路径:
common_CFLAGS := -Ijni/mylib/include
任何其他路径都需要另一个-I选项。