在没有Android Studio的情况下为Android创建(Cmake)C / C ++库

归志宁无五亩园,读书本意在元元。这篇文章主要讲述在没有Android Studio的情况下为Android创建(Cmake)C / C ++库相关的知识,希望能为你提供帮助。
我的目标是创建一个用C / C ++制作的外部库,我可以在我的android项目中导入它。
我知道如何导入,我知道如何使用JNI,Cmake等在项目内部用C / C ++创建库。但这不是我的目标。
为此,我使用小步骤,首先使用简单的库:
gmath.c

#include "gmath.h"#if defined(__GNUC__) & & __GNUC__ > = 4 #define GMATH_EXPORT __attribute__((visibility("default"))) #elif defined(__SUNPRO_C) & & (__SUNPRO_C > = 0x590) #define GMATH_EXPORT __attribute__((visibility("default"))) #else #define GMATH_EXPORT #endifGMATH_EXPORT unsigned gpower(unsigned n) { return 44; }

gmath.h
#ifndef __POWER_HPP__ #define __POWER_HPP__ /* * return pow(2, n) */ #ifdef __cplusplus extern "C" #endif // __cplusplus unsigned gpower(unsigned n); #endif //__POWER_HPP__

我正在使用创建库:cmake -DCMAKE_TOOLCHAIN_FILE= /Users/vcanato/Library/Android/sdk/cmake/3.6.4111459/android.toolchain.cmake -DCMAKE_MAKE_PROGRAM= /Users/vcanato/Library/Android/sdk/ndk-bundle/ -DANDROID_ABI="arm64-v8a"
【在没有Android Studio的情况下为Android创建(Cmake)C / C ++库】CMake的
cmake_minimum_required(VERSION 3.4.1)set(CMAKE_VERBOSE_MAKEFILE on)set(CMAKE_TOOLCHAIN_FILE "/Users/vcanato/Library/Android/sdk/cmake/3.6.4111459/android.toolchain.cmake") set(ANDROID_NDK "/Users/vcanato/Library/Android/sdk/ndk-bundle/")add_library(gmath STATIC src/gmath.c)set(distribution_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../distribution") set_target_properties(gmath PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${distribution_DIR}/gmath/lib/${ANDROID_ABI}")

问题是,当我使用lipo -info libgmath.aby终端时,它会显示不同的ABI:
在没有Android Studio的情况下为Android创建(Cmake)C / C ++库

文章图片

如何使用权限参数将此外部库构建到android?
答案使用来自ndk的cmake工具链,而不是sdk:
cmake -DCMAKE_TOOLCHAIN_FILE= /Users/vcanato/Library/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake-DCMAKE_MAKE_PROGRAM= /Users/vcanato/Library/Android/sdk/ndk-bundle/ -DANDROID_ABI="arm64-v8a"


    推荐阅读