首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加libjpeg-turbo Android NDK作为静态库

如何添加libjpeg-turbo Android NDK作为静态库
EN

Stack Overflow用户
提问于 2020-06-16 20:07:26
回答 1查看 712关注 0票数 0

我想在我的Android项目中使用libjpeg-turbo (完全只有libjpeg)。我找不到如何将库完全添加到我的项目中。

首先,我使用x86-64).

  • Secondly,(作为四种代码:arm64-v8aarmeabi-v7ax86

  • )在项目src/main/cpp文件夹libjpeg中准备并放入ANDROID_ABI文件夹libjpeg.a静态库。H 213f 214

接下来,我将添加到CMakeLists.txt

代码语言:javascript
复制
add_library( libjpeg STATIC IMPORTED )
set_target_properties( libjpeg
        PROPERTIES
        IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libjpeg/${ANDROID_ABI}/libjpeg.a )
# and
target_link_libraries(
    native-lib
    libjpeg
    ${log-lib})

下面是我的整个CMakeLists.txt:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.4.1)

add_library( libjpeg STATIC IMPORTED )
set_target_properties( libjpeg
        PROPERTIES
        IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libjpeg/${ANDROID_ABI}/libjpeg.a )


include_directories(src/main/cpp/rapidjson/)
include_directories(src/main/cpp/Eigen)

file(GLOB CPP_FILES "src/main/cpp/*.cpp")
add_library(
        native-lib
        SHARED

        native-lib.cpp
        common.cpp
        archive.cpp
        crc32.cpp
        image.cpp
        read_manifest.cpp
        sensors.cpp
        thumbnail.cpp
        upf.cpp
        upf-toolkit.cpp
        write_manifest.cpp
        write_upf.cpp
        )
find_library(log-lib log)
target_link_libraries(native-lib libjpeg ${log-lib})

我没有构建错误,但我不能将libjpeg头包含在我的cpp文件中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-16 21:37:51

您收到编译错误,因为您的CMake代码没有指定libjpeg头文件的位置。可以通过为导入的libjpeg目标设置INTERFACE_INCLUDE_DIRECTORIES属性来指定包含libjpeg标头的目录。

代码语言:javascript
复制
add_library( libjpeg STATIC IMPORTED )
set_target_properties( libjpeg
        PROPERTIES
        IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libjpeg/${ANDROID_ABI}/libjpeg.a
        INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/libjpeg/include
)

注意:您可能必须修改路径以匹配这些标头驻留在计算机上的位置。

对于其他一些挑剔的注释(与错误无关),更新后的CMake文件可能如下所示:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.4.1)

# You should always put the project directive at the top of your root CMakeLists.txt file.
project(MyProject)

add_library( libjpeg STATIC IMPORTED )
set_target_properties( libjpeg
        PROPERTIES
        IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libjpeg/${ANDROID_ABI}/libjpeg.a
        INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/libjpeg/include
)

# You can list multiple directories in one include_directories() call.
include_directories(
    src/main/cpp/rapidjson/
    src/main/cpp/Eigen
)

# Looks like this isn't used. Maybe you can remove it.
file(GLOB CPP_FILES "src/main/cpp/*.cpp")

add_library(
        native-lib
        SHARED

        native-lib.cpp
        common.cpp
        archive.cpp
        crc32.cpp
        image.cpp
        read_manifest.cpp
        sensors.cpp
        thumbnail.cpp
        upf.cpp
        upf-toolkit.cpp
        write_manifest.cpp
        write_upf.cpp
        )
find_library(log-lib log)

# Always place the scoping argument (e.g. PUBLIC, PRIVATE) in this call.
target_link_libraries(native-lib PUBLIC libjpeg ${log-lib})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62416742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档