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

问题描述 投票:0回答:1

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

  • 首先,我使用BUILDING.md(作为四个ANDROID_ABIarm64-v8aarmeabi-v7ax86x86-64来构建它。
  • 第二,我在项目src/main/cpp文件夹libjpeg中准备好,并将ANDROID_ABI文件夹libjpeg.a静态库放入。

下一个我添加到CMakeLists.txt

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:

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})

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

android c++ cmake android-ndk libjpeg-turbo
1个回答
0
投票

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

libjpeg

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

[加上其他一些挑剔的注释(与错误无关),更新的CMake文件可能看起来像这样:

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
)
© www.soinside.com 2019 - 2024. All rights reserved.