gpt4 book ai didi

android-ndk - Android NDK、CMake 与其他库

转载 作者:行者123 更新时间:2023-12-03 21:31:28 25 4
gpt4 key购买 nike

因此,我正在尝试在 Android Studio 上使用 Android NDK 构建和测试 CMake。我可以编译我的库,但它似乎不想拉取任何第三方依赖项。我一直在阅读工具链并寻找更好的文档,但没有运气。有人能告诉我我是否失踪了吗?

cmake_minimum_required(VERSION 3.4.1)

set(SFML_PATH ${ANDROID_NDK}/sources/sfml)
set(SFML_LIB_PATH ${SFML_PATH}/lib/${ANDROID_NDK_ABI_NAME})

set(SFML_LIB_SYSTEM ${SFML_LIB_PATH}/libsfml-system.so)
set(SFML_LIB_AUDIO ${SFML_LIB_PATH}/libsfml-audio.so)
set(SFML_LIB_GRAPHICS ${SFML_LIB_PATH}/libsfml-graphics.so)
set(SFML_LIB_NETWORK ${SFML_LIB_PATH}/libsfml-network.so)
set(SFML_LIB_WINDOW ${SFML_LIB_PATH}/libsfml-window.so)
set(SFML_LIB_ACTIVITY ${SFML_LIB_PATH}/libsfml-activity.so)
set(SFML_LIB_MAIN ${SFML_LIB_PATH}/libsfml-main.a)


set(SFML_LIBS ${SFML_LIB_SYSTEM} ${SFML_LIB_GRAPHICS} ${SFML_LIB_AUDIO} ${SFML_LIB_WINDOW} ${SFML_LIB_ACTIVITY})

include_directories(${SFML_PATH}/include)
link_directories(${SFML_LIB_PATH})

add_library(native-lib SHARED
src/main/cpp/native-lib.cpp)

target_link_libraries(native-lib log ${SFML_LIBS})

#file(COPY ${SFML_LIBS} DESTINATION ${__android_install_path})
FOREACH(SFML_LIB ${SFML_LIB})
execute_process( COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${SFML_LIB}" "${LIBRARY_OUTPUT_PATH}/${SFML_LIB}" RESULT_VARIABLE __fileCopyProcess )
MESSAGE("Lib: ${SFML_LIB}")
ENDFOREACH(SFML_LIB)

上面是我的 CMakeLists.txt。我做了一些黑客攻击,让它用带有路径的 SFML 编译,因为我还没有找到关于 CMake 和 Android 的好的文档。

最佳答案

能否为以下内容添加更多信息:
“但它似乎不想拉动任何第三方依赖项。”?

这个:
https://github.com/googlesamples/android-ndk/tree/master/hello-libs
有静态和共享的 3rd 方库,你可以试试。

对于共享依赖的lib,需要打包成APK,在gradle里面做,cmake不会做。
上面的例子表明,基本上它们也需要复制到您的 app/src/main/jniLibs 中,以便将它们打包到 apk 中,并推送到您的 android 手机/平板电脑。在运行时它们可以被加载。
我试图将一组库放入一个目录中,并使用

  • 链接目录(...)

  • 然后只需将lib名称直接放入
  • target_link_libraries(...)

  • 也有效。确保您拥有适用于您打算为应用程序支持的 ABI 的正确库 [看起来您只是为一个 ABI 构建]。

    关于android-ndk - Android NDK、CMake 与其他库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37780921/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com