Вы получаете ошибку компиляции, потому что ваш код CMake не указывает расположение файлов заголовков libjpeg
. Вы можете указать каталог, содержащий заголовки libjpeg
, установив свойство INTERFACE_INCLUDE_DIRECTORIES
для импортированной цели libjpeg
.
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 может выглядеть примерно так:
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})