Luk*_*uke 21 gcc makefile android-ndk
一个简单的问题(我使用android NDK r6与cygwin,但这是一个关于makefile和gcc的问题).假设我在dni mylib_v_1 /下面的jni /目录下放了一个库.Mylib的结构如下:
mylib_v_1
mylib
include
Run Code Online (Sandbox Code Playgroud)
在include目录下有两个文件myinc1.hpp和myinc2.hpp.在myinc1.hpp中有一行:
#include <mylib/myinc2.hpp>
Run Code Online (Sandbox Code Playgroud)
在我的.cpp文件中,在jni /目录下,有以下行:
#include <mylib/myinc1.hpp>
Run Code Online (Sandbox Code Playgroud)
我想设置Android.mk(或者需要设置其他文件)以便让gcc知道使用,作为附加的包含目录,jni/mylib_v_1 /以便使用#include括号(而不是两个)文件,在我的实际案例中有很多.hpp,其中包括许多带括号表示法的其他.hpp).
我怎样才能做到这一点?
谢谢.
PS.如果在.cpp文件中我以这种方式更改include:
#include "mylib/myinc1.hpp"
Run Code Online (Sandbox Code Playgroud)
gcc找到myinc1.hpp但是,在处理它时,它找到第二个包括:
#include <mylib/myinc2.hpp>
Run Code Online (Sandbox Code Playgroud)
并停在那里,说它无法找到文件myinc2.hpp.
Ivo*_*Ivo 27
选项1:
将以下行之一添加到您选择的模块中的Android.mk:
LOCAL_C_INCLUDES := /path/to/your/includes # ignore previous includes
# OR
LOCAL_C_INCLUDES += /path/to/your/includes # preserve previous includes
Run Code Online (Sandbox Code Playgroud)
如有必要,您可以创建一个指向'/ path/to/your/includes'的环境变量,并将其包含如下:
LOCAL_C_INCLUDES := $(MYLIB_INCLUDES_PATH) # ignore previous includes
# OR
LOCAL_C_INCLUDES += $(MYLIB_INCLUDES_PATH) # preserve previous includes
Run Code Online (Sandbox Code Playgroud)
选项2:
将包含所有头文件(mylib)的完整文件夹复制到项目的"jni"文件夹中.
将以下行添加到您选择的模块内的Android.mk中:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/mylib
Run Code Online (Sandbox Code Playgroud)
要么
LOCAL_C_INCLUDES += $(LOCAL_PATH)/mylib
Run Code Online (Sandbox Code Playgroud)取决于是否有先前包括.
选项3:
安装Eclipse的CDT插件,并将'mylib'目录的绝对路径添加到项目的包含路径中.这是一个很棒的教程,显示了所有必要的步骤.
http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/
您可以使用以下命令在 Android.mk 中添加 C 包含路径:
common_CFLAGS := -Ijni/mylib/include
Run Code Online (Sandbox Code Playgroud)
任何其他路径都需要另一个 -I 选项。