在没有 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-v7a
、arm64-v8a
、x86
、x86_64
、mips
、mips64
尽管 mips
和 mips64
现在已弃用(Android NDK r16b
是支持它们的最后一个版本)。
看来,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 haveANDROID_HOME
environment-variable set to Android-SDK root directory (which of course, needs NDK extracted inndk-bundle
sub-dir).
全部完成!
只需为每个 CPU 架构重复步骤 3,即将 ANDROID_ABI
更改为可能的选项之一:
armeabi-v7a
、arm64-v8a
、x86
、x86_64
、mips
、mips64
尽管 mips
和 mips64
现在已弃用(Android NDK r16b
是支持它们的最后一个版本)。