c++ - 包括来自预建库 Android.mk 的头文件

标签 c++ maven cmake android-ndk java-native-interface

我已经使用

在我的库创建中包含了一个预建库
include $(PREBUILT_SHARED_LIBRARY)

并通过使用包含或不包含经过验证的天气库

$(modules-get-list)

当我尝试在预构建库中包含一个头文件时,我遇到了找不到头文件的错误。下面是我确切的 Android.mk 文件

LOCAL_PATH := $(call my-dir)

# import prebuilt-library
include $(CLEAR_VARS)
LOCAL_MODULE    := prebuilt-library
LOCAL_SRC_FILES := ../../../target/dependency/libs/$(TARGET_ARCH_ABI)/libprebuilt.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)

# building provider interface library for communication
include $(CLEAR_VARS)
LOCAL_MODULE := library-interface
LOCAL_SRC_FILES := LibraryComminicator.cpp
LOCAL_SHARED_LIBRARIES := prebuilt-library

include $(BUILD_SHARED_LIBRARY)

$(warning Existing modules: "$(modules-get-list)")

# Include the Android Maven plugin generated makefile
# Important: Must be the last import in order for Android Maven Plugins paths to work
include $(ANDROID_MAVEN_PLUGIN_MAKEFILE)

最佳答案

试试下面的 Android.mk:

LOCAL_PATH := $(call my-dir)
EXT_LIB_ROOT := $(LOCAL_PATH)/../../../target/dependency # or whatever

# building provider interface library for communication
include $(CLEAR_VARS)
LOCAL_MODULE := library-interface
LOCAL_SRC_FILES := LibraryComminicator.cpp
LOCAL_SHARED_LIBRARIES := prebuilt-library

include $(BUILD_SHARED_LIBRARY)

# import prebuilt-library
LOCAL_PATH := $(EXT_LIB_ROOT)
include $(CLEAR_VARS)
LOCAL_MODULE    := prebuilt-library
LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/libprebuilt.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)

$(warning Existing modules: "$(modules-get-list)")

基本规则是:xxx_INCLUDE_FILES 应该相对于'current dir',而LOCAL_SRC_FILES 相对于$(LOCAL_PATH),而不是'current dir'。对于 NDK,“当前目录”通常是 $(LOCAL_PATH)/.. 但这可能会改变,特别是如果链接了 Android.mk 文件,即一个包含另一个。

对于 PREBUILT_SHARED_LIBRARY 模块,您确实不需要 LOCAL_PATH,但我希望 LOCAL_SRC_FILES 尽可能短。

关于c++ - 包括来自预建库 Android.mk 的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46531663/

相关文章:

java - bean的Spring Boot Autowiring 在maven多模块项目中不起作用

java - 将自定义环境变量传递给 maven cargo

java - Maven:在 Windows 上 Checkstyle 插件不应用抑制过滤器

c++ - 我如何通过 CMake(qt5_wrap_ui) 指定 Qt Designer Form 类的文件名

c++ - mingw-64 - 安装包

c++ - 为什么 std::sort() 需要静态比较函数?

c++ - 对 `librarymanager::getBook(std::basic_string<char, std::char_traits<char>, std::allocator<char>>) 的 undefined reference

g++ - 使用CMAKE编译具有不同标志的相同文件

c++ - 在 Visual Studio 2008 上使用 jsoncpp

c++ - 类型安全 - std::tuple 的 all_of/any_of/none_of