【发布时间】:2020-02-23 02:07:17
【问题描述】:
我正在尝试在 Windows 10 上使用 Android Studio 和 CMake 启动一个本机应用程序项目,但我坚持包含 libpng。
对于初学者来说,这是我第一次看到 CMakeLists.txt 文件。我花了一天时间才弄清楚target_link_libraries(native-activity ... png) 不可能是target_link_libraries(png native-activity ...),因为所有错误消息都是关于未创建文件和由于缺少工具链要求而导致命令失败(为什么列表末尾的基本错误?不酷!)。
在最终设法在项目中包含 libpng 之后,我现在遇到了构建错误:
Error:Execution failed for task ':app:externalNativeBuildDebug'.
...
error: unknown target CPU 'armv5te'
CMake Error at scripts/genout.cmake:78 (message):
Failed to generate
C:/APP_PATH/app/libpng-1.6.28/build/scripts/symbols.out.tf1
ninja: build stopped: subcommand failed.
我已经递归地 grep 了我的项目、.android、.AndroidStudio2.2 目录以及文件名,除了 genout.cmake 之外,在 armv5te 中什么也找不到。我的 abiFilters 行是abiFilters 'x86'。
如何构建 libpng 以链接到我的本机应用程序?此外,在 Android Studio 中,它显示该项目现在包含 libpng 源文件(专用于它的项目不少于 9 个!)。有什么办法可以去掉吗?
这是我的 CMakeLists.txt:
cmake_minimum_required(VERSION 3.4.1)
# build native_app_glue as a static lib
add_library(app-glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
set(png_src_dir ../../../../libpng-1.6.28)
set(PNG_STATIC ON)
add_subdirectory(${png_src_dir} ${png_src_dir}/build)
# now build app's shared lib
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
add_library(native-activity SHARED
main.cpp logger.cpp logger.h game.cpp game.h
shaders.cpp shaders.h assets.cpp assets.h)
target_include_directories(native-activity PRIVATE ${ANDROID_NDK}/sources/android/native_app_glue
C:/devlibs/include
${png_src_dir})
# add lib dependencies
target_link_libraries(native-activity app-glue android log EGL GLESv2 png)
【问题讨论】:
标签: android android-studio cmake