Я пытаюсь создать проект Android NDK с использованием CMake. Мой проект имеет зависимости некоторых предварительно собранных статических библиотек, таких как libcurl . Я изо всех сил пытался связать эти библиотеки со своей собственной нативной библиотекой, затем я последовал этому ответу . В нем говорится, что необходимо указать абсолютные пути для статических библиотек, и вот здесь я столкнулся с проблемой.
Я нашел переменную CMake с именем PROJECT_SOURCE_DIR
, которая, как я полагаю, является корневой директорией моего проекта согласно документации. Но когда я попытался использовать эту переменную в моем файле CMakeList.txt , выдается следующая ошибка:
Build command failed.
Error while executing process /Users/sdsl/Library/Android/sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /Users/sdsl/Documents/AfriGIS-SB/GitLab/AGMapKit3dDroid/agmapkit3d_droid/mapkit3dapp/.externalNativeBuild/cmake/debug/x86_64 --target mapkit-engine}
ninja: error: '../../../../mapkit3dapp/src/main/jni/CoreClasses/Libraries/droid/libcurl/x86_64/libcurl.a', needed by '../../../../build/intermediates/cmake/debug/obj/x86_64/libmapkit-engine.so', missing and no known rule to make it
Вот мой CMakeLists.txt файл:
cmake_minimum_required(VERSION 3.4.1)
add_library( # Sets the name of the library.
mapkit-engine
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/jni/MKMapJNI.cpp
src/main/jni/CoreClasses/IMKCPlatform.cpp)
# Specifies a path to native header files.
include_directories(src/main/jni/CoreClasses/)
include_directories(src/main/jni/CoreClasses/Libraries/droid/libcurl/include/)
find_library(log-lib log)
find_library(android-lib android)
target_link_libraries(mapkit-engine ${log-lib} ${android-lib})
target_link_libraries(mapkit-engine ${PROJECT_SOURCE_DIR}/mapkit3dapp/src/main/jni/CoreClasses/Libraries/droid/libcurl/${ANDROID_ABI}/libcurl.a)
Я могу заверить, что мои статические библиотеки правильно хранятся в каталоге моего проекта. И если я попытался перейти к корневому каталогу моего проекта, щелкнув эту переменную PROJECT_SOURCE_DIR
, он перенесет меня в корневой каталог в IDE.