在没有 Android-Studio 的情况下构建 CMake 库(通过命令行或 GUI)

Build CMake library without Android-Studio (by command-line or GUI)

看来,Android-Studio 设置了特定的 CMake 选项, 而且无论我尝试什么,我都无法使用命令行(Android-Studio 之外)进行构建!!

有什么方法可以在不打开 Android-Studio 的情况下构建 Android 项目的 CMake 库?

Note: I already found solution and will share answer to this shortly.

是的,需要设置一些选项 and/or 变量才能使 CMake 命令行构建工作(甚至无需打开 Android-Studio)。

1.首先, 创建 my-toolchain.cmake 文件(在你的项目旁边,可能在 config 目录中),内容如下:

#
# Allows compiling outside of Android-Studio.
#

set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

set(CMAKE_TOOLCHAIN_DIRECTORY "$ENV{ANDROID_HOME}/ndk-bundle/build/cmake")
if(NOT CMAKE_TOOLCHAIN_FILE)
  if(NOT ANDROID_ABI)
    # Default to 32 Bit ARMv7 CPU.
    set(ANDROID_ABI "armeabi-v7a")
  endif()
  if(NOT ANDROID_PLATFORM)
    set(ANDROID_PLATFORM "android-15")
  endif()
  set(CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_DIRECTORY}/android.toolchain.cmake")
endif()

if(WIN32 AND NOT CMAKE_MAKE_PROGRAM)
  set(CMAKE_MAKE_PROGRAM "$ENV{ANDROID_HOME}/ndk-bundle/prebuilt/windows/bin/make.exe" CACHE INTERNAL "" FORCE)
endif()

2。其次,将上一步创建的文件添加到你的项目中,例如:

cmake_minimum_required(VERSION 3.2)

# Detect toolchain.
include(config/my-toolchain.cmake)

project(MyProject C CXX)

# ... and so on ...

3。最后, 在您的 CMakeLists.txt 文件所在的控制台 cd 中,并使用如下命令构建:

cmake -H. -B .build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DANDROID_PLATFORM=android-14 -D ANDROID_ABI=armeabi-v7a

cd .build

"%ANDROID_HOME%\ndk-bundle\prebuilt\windows\bin\make.exe" install INSTALL_ROOT="%CD%\.build"

Note that last command of Step-3 changes based on your operating-system, but above should work for Windows if you have ANDROID_HOME environment-variable set to Android-SDK root directory (which of course, needs NDK extracted in ndk-bundle sub-dir).

全部完成!
只需为每个 CPU 架构重复步骤 3,即将 ANDROID_ABI 更改为可能的选项之一:
armeabi-v7aarm64-v8ax86x86_64mipsmips64

尽管 mipsmips64 现在已弃用(Android NDK r16b 是支持它们的最后一个版本)。