【发布时间】:2020-11-08 12:22:22
【问题描述】:
我正在为 Android 开发一个 C++ 库,并且我依赖 libpng。我正在为 Android https://github.com/julienr/libpng-android.git 使用修改后的库,它有一个 build.sh 文件,以便针对不同的架构进行编译。或者可以使用 ndk-build 进行编译。
我正在使用 FetchContent 从 CMake 获取库,这可以有效地下载源文件,但无法正确构建。我正在设置BUILD_COMMAND,但它不起作用。
FetchContent_Declare( png
GIT_REPOSITORY https://github.com/julienr/libpng-android.git
GIT_TAG master
UPDATE_DISCONNECTED TRUE
STEP_TARGETS update
BUILD_COMMAND "${NDK_PATH}/ndk-build.cmd NDK_PROJECT_PATH=${png_SOURCE_DIR}"
FetchContent_GetProperties(png)
if (NOT png_POPULATED)
FetchContent_Populate(png)
add_subdirectory("${png_SOURCE_DIR}" "${png_BINARY_DIR}" EXCLUDE_FROM_ALL)
endif()
看来BUILD_COMMAND 什么都不做。
那么,如何从 CMake 获取并构建 libpng-android,然后将该结果作为导入库导入?
【问题讨论】:
-
函数
FetchContent_Declare用于立即下载子项目的源代码(在配置阶段),因此可以配置和构建 作为主项目的一部分,通过add_subdirectory。您可能会将FetchContent_Declare与ExternalProject_Add函数混淆,后者执行子项目的所有步骤:下载、配置、构建,但仅在主项目的构建 阶段执行。如果您想在主项目的配置阶段执行所有这些步骤,只需使用execute_process命令。
标签: android c++ android-studio cmake libpng