我在Android Studio下创建了一个本机库,我正在伤害以下问题。
在我的AndroidStudio项目CMakeLists.txt
中,我有这个:
cmake_minimum_required(VERSION 3.7.0)
add_library(native-lib
SHARED
src/main/cpp/native-lib.cpp )
IF(USE_EXTERNAL)
include(ExternalProject)
ExternalProject_Add(
project_mylib
DOWNLOAD_COMMAND ""
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/mylib/"
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}
)
add_dependencies(native-lib project_mylib)
ELSE()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/mylib/)
ENDIF()
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
target_link_libraries(native-lib
${log-lib}
mylib
)
自制图书馆位于src/main/cpp/mylib/
,CMakeLists.txt
:
cmake_minimum_required(VERSION 3.7.0)
project(lib)
add_library(mylib SHARED lib.cpp)
INSTALL(TARGETS mylib
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
)
当我使用"传统" add_subdirectory(...)
一切顺利。但是,如果我使用ExternalProject_Add(...)
版本,链接器将跳过已编译的libmylib.so
库,因此无法将mylib
链接到native-lib
。
我收到以下消息:skipping incompatible /home/.../app/.externalNativeBuild/cmake/debug/arm64-v8a/lib/libmylib.so when searching for -lmylib
我的猜测是,当CMakeLists.txt
编译导致不兼容的共享库时,AndroidStudio为根ExternalProject
设置的所有标志都没有设置。
所以,我想知道是否有一种方法来编译一个cmake ExternalProject
,就像它是根项目的一部分(共享相同的编译标志等)?
感谢您的任何建议