在没有 Android-Studio 的情况下构建 CMake 库(通过命令行或 GUI) [英] Build CMake library without Android-Studio (by command-line or GUI)
问题描述
看来,Android-Studio 设置了特定的 CMake
选项,无论我尝试什么,我都无法使用命令行(Android-Studio 之外)进行构建!!
有没有什么方法可以在不打开 Android-Studio 的情况下构建 Android 项目的 CMake 库?
<块引用>注意:我已经找到了解决方案,很快就会分享答案.
是的,需要设置一些选项和/或变量才能使 CMake 命令行构建工作(甚至无需打开 Android-Studio).
1.首先,创建my-toolchain.cmake
文件(在你的项目旁边,可能在config
目录中),内容如下:
2.其次,将上一步创建的文件添加到你的项目中,例如:
cmake_minimum_required(VERSION 3.2)# 检测工具链.包括(配置/我的工具链.cmake)项目(MyProject C CXX)# ... 等等 ...
3.最后,在你的 CMakeLists.txt
文件所在的控制台 cd
中,并使用如下命令构建:
cmake -H.-B .build -G "Unix Makefiles";-DCMAKE_BUILD_TYPE=发布 -DANDROID_PLATFORM=android-14 -D ANDROID_ABI=armeabi-v7a光盘 .build%ANDROID_HOME%\ndk-bundle\prebuilt\windows\bin\make.exe"install INSTALL_ROOT=%CD%\.build";
<块引用>
注意第 3 步的最后一个命令会根据您的操作系统而变化,但如果您有 ANDROID_HOME
,上面的命令应该适用于 Windows
环境变量设置为 Android-SDK 根目录(当然需要在 ndk-bundle
子目录中提取 NDK).
大功告成!
只需对每个 CPU 架构重复步骤 3,即将 ANDROID_ABI
更改为可能的选项之一:armeabi-v7a
、arm64-v8a
、x86
、x86_64
、mips
、<代码>mips64
虽然,mips
和 mips64
现在已被弃用(Android NDK r16b
是支持它们的最新版本).
It seems, Android-Studio sets specific CMake
options,
And I can not build with command-line (outside of Android-Studio) no matter what I tried!!
Is there any way to build an Android project's CMake library without even opening Android-Studio?
Note: I already found solution and will share answer to this shortly.
Yes there were some options and/or variables that need to be set for CMake command-line build to work (without even opening Android-Studio).
1. Firstly, create the my-toolchain.cmake
file (beside your project, maybe in config
dir), with content below:
#
# 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. Secondly, Add the file created in last step into your project, for example:
cmake_minimum_required(VERSION 3.2)
# Detect toolchain.
include(config/my-toolchain.cmake)
project(MyProject C CXX)
# ... and so on ...
3. Finally, in console cd
where your CMakeLists.txt
file is, and build with commands like:
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).
All done!
Just repeat Step-3 for each CPU architecture, i.e. change ANDROID_ABI
to one of possible options:
armeabi-v7a
, arm64-v8a
, x86
, x86_64
, mips
, mips64
Although, mips
and mips64
are deprecated by now (and Android NDK r16b
was last version supporting them).
这篇关于在没有 Android-Studio 的情况下构建 CMake 库(通过命令行或 GUI)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!