我想在我的Android NDK项目中使用libjpeg-turbo(完全是libjpeg)。我找不到如何将库完全添加到我的项目中。
BUILDING.md
(作为四个ANDROID_ABI
:arm64-v8a
,armeabi-v7a
,x86
,x86-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标头。
您收到编译错误,因为您的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
)