Я новичок в CMake и провел почти 2 недели в поисках по всему Интернету, пытаясь выяснить, почему я не могу связать статические библиотеки libcurl с моими исходниками cpp в Cmake в рамках моего проекта Android.
Я нашел этот репозиторий: https://github.com/gcesarmza/curl-android-ios, который использовал для создания статических библиотек для libcurl. У него есть зависимости с openssl и libz (я не знаю, с чем еще он собран)
Вот мой cmake:
cmake_minimum_required(VERSION 3.4.1)
include_directories(
${EXTERNAL}/libCurl/include/
#${EXTERNAL}/openssl/include/
)
add_library(
libcurl
STATIC IMPORTED SHARED
)
set_target_properties(
libcurl
PROPERTIES IMPORTED_LOCATION
${EXTERNAL}/libcurl/lib/android/libcurl.a
)
add_library(
libz
STATIC IMPORTED
)
set_target_properties(
libz
PROPERTIES IMPORTED_LOCATION
${EXTERNAL}/zlib/lib/armeabi-v7a/libz.a
)
set(WHARE_LIBRARY Whare_Native)
add_library(
${WHARE_LIBRARY}
SHARED
${CPP_SOURCE}/MyWebRequest.cpp
)
target_link_libraries(
${WHARE_LIBRARY}
libcurl
libz
)
У меня есть простая реализация cpp, которая делает вызовы curl, такие как curl_easy_init (). Я получаю следующую ошибку компоновщика при сборке проекта с этим файлом CMake:
[9/9] Linking CXX shared library
../../../../build/intermediates/cmake/debug/obj/arm64-
v8a/libWhare_Native.so
FAILED: : && /Users/jay.nagar/Library/Android/sdk/ndk-
bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --
target=aarch64-none-linux-android --gcc-
.........
.........
.........
.........
WhareWebRequest.cpp:40: undefined reference to `curl_easy_init'
clang++: error: linker command failed with exit code 1 (use -v to see
invocation)
ninja: build stopped: subcommand failed.
Я потратил несколько дней на Stackoverflow, GitHub и другие источники, а также пробовал множество предложенных решений, таких как:
Как использовать libcurl как статическую библиотеку с cmake?
и
Связывание статических библиотек с помощью c ++ / cmake
Я также посмотрел официальную документацию CMake, чтобы понять различные свойства. Я экспериментировал с CFLAGS, CURL_LIBRARY, find_library и что нет. Как я уже сказал, я абсолютный новичок, когда дело доходит до конфигураций Cmake. Может кто-нибудь понять тип ошибки, которую я получаю? Я думаю, что это связано с проблемами, связанными со статическими библиотеками, но я не уверен. Может кто-нибудь помочь отладить эту проблему, в которой я нахожусь много дней!
Спасибо и помощь очень ценится!
https://imgur.com/a/gLN9ctq