android.mk静态库,如何在Android NDK的Android.mk文件中正确包含预构建的静态库?

我很难将我的库包含在

Android NDK构建中.

在创建虚拟cpp文件并使用shell中的direct g命令构建所有内容时,库已正确编译并正常工作.

当前的Android.mk文件不起作用,并抛出错误,无法找到相应的头文件(属于.a文件的一部分).

如何正确包含预构建的静态库?

我的Android.mk文件如下所示:

LOCAL_PATH := $(call my-dir)

# V8 Base

include $(CLEAR_VARS)

LOCAL_MODULE := v8_base

LOCAL_MODULE_FILENAME := v8_base_static

LOCAL_SRC_FILES := ../lib/libv8_base.a

include $(PREBUILT_STATIC_LIBRARY)

# V8 Nosnapshot

include $(CLEAR_VARS)

LOCAL_MODULE := v8_nosnapshot

LOCAL_MODULE_FILENAME := v8_nosnapshot_static

LOCAL_SRC_FILES := ../lib/libv8_nosnapshot.a

include $(PREBUILT_STATIC_LIBRARY)

# V8GL Runtime

include $(CLEAR_VARS)

LOCAL_MODULE := v8gl-runtime

LOCAL_SRC_FILES := main.c ../src/v8gl/v8gl.cpp

LOCAL_CPPFLAGS := -D__ANDROID__

LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM

LOCAL_STATIC_LIBRARIES := android_native_app_glue v8_base v8_nosnapshot

# LOCAL_EXPORT_CPPFLAGS := -D__ANDROID__

include $(BUILD_SHARED_LIBRARY)

$(call import-module,android/native_app_glue)

编译器输出如下,这是有道理的,但只显示我没有包含单个.a文件,我不知道为什么:

Compile++ thumb : v8gl-runtime <= v8gl.cpp

(... g++ call)

In file included from jni/../src/v8gl/v8gl.cpp:6:

jni/../src/v8gl/v8gl.h:5:16: error: v8.h: No such file or directory

绝对路径的解决方案

感谢@ alex-cohn的暗示,我发现包含被错误地指出了.

所以我决定使用在调用包含绝对路径的ndk-build之前设置的环境变量.这解决了包含问题.

所以实际包含完成的最后一个模块现在看起来像:

ADK_PATH=/var/whatever/to/your/project/root_not_jni

include $(CLEAR_VARS)

LOCAL_MODULE := v8gl-runtime

LOCAL_SRC_FILES := main.c ../src/v8gl/v8gl.cpp

LOCAL_C_INCLUDES:= $(ADK_PATH)/external/v8/include

LOCAL_CPPFLAGS := -D__ANDROID__

LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM

LOCAL_STATIC_LIBRARIES := android_native_app_glue v8_base v8_nosnapshot

现在它还显示了包含的库,因为它们之后被编译 – 无论出于何种原因.

解决方案与相对路径

所有包含路径都相对于项目根文件夹而不是jni文件夹.这意味着它将作为编译器登陆-I标志,如下所示:

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../file_in_project.root

# resulting g++ flag:

-Ijni/../file_in_project.root

所以相对包含路径和LOCAL_SRC_FILES之间存在差异,这些路径相对于jni文件夹!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值