NDK未解析包含但路径位于旁路库的local_c_includes中

时间:2013-06-09 16:27:38

标签: android c++ c android-ndk markdown

我正在尝试让Bypass Markdown解析库与我的Android项目一起使用。

我编译了Boost并安装了它(因为它是一个依赖项)。然后我下载了Bypass源并将Android项目作为库导入,并将其作为库包含在我自己的项目属性中。

当我向项目添加NDK支持并重建它时,我注意到绕过项目中的一些错误。我认为这是由unresolved inclusion "parser.h"引起的。

这是我的Android.makefile:

LOCAL_PATH := $(call my-dir)
BYPASS_SRC := ../../../../src/

include $(CLEAR_VARS)

LOCAL_MODULE    := bypass
LOCAL_SRC_FILES := \
    bypass.cpp \
    $(BYPASS_SRC)parser.cpp \
    $(BYPASS_SRC)document.cpp \
    $(BYPASS_SRC)element.cpp \
    ../../../../dep/libsoldout/markdown.c \
    ../../../../dep/libsoldout/buffer.c \
    ../../../../dep/libsoldout/array.c

LOCAL_C_INCLUDES:= ../../../dep/libsoldout ../../../src /opt/local/include /usr/local/include $(BYPASS_INCLUDE_PATH)

include $(BUILD_SHARED_LIBRARY)

parser.h文件位于../../../../src/文件夹中。我从makefile的开头检查了它,它在那个确切的文件夹中,但是找不到它。可能是什么原因造成的?

顺便说一句,这是我第一次使用NDK而且几乎没有C / C ++经验,所以我们将非常感谢您的详细解答。

1 个答案:

答案 0 :(得分:1)

在jni / Android.mk文件中,我们设置LOCAL_PATH并列出相对于LOCAL_PATH的LOCAL_SRC_FILES。另一方面,LOCAL_C_INCLUDES列表包含C和C ++编译器将搜索以解析源文件中的#include指令的目录。这些目录相对于项目根目录(通常比LOCAL_PATH高一级)。

在您的情况下,您不清楚如何检查parser.h的../../../../src路径。这是来自jni目录(Android.mk所在的位置),还是来自项目根目录?

关于Android.mk文件的更多评论:因为您使用的是交叉编译器,所以不应该在/ opt / local或/ usr / local / include目录中查找包含文件.NDK应该提供与平台相关的替代方案。我没有找到定义的BIPASS_INCLUDE_PATH。