1、编写脚本
#!/bin/bash -x
rm -rf build
rm -rf lib
set -e
ARM_ABI="armeabi-v7a"
ENTER_DIR="$(cd "$(dirname "$0")";pwd)"
ANDROID_NDK=NDK路径
ANDROID_AR=${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-ar
mkdir -p $ENTER_DIR/build/
mkdir -p $ENTER_DIR/build/$ARM_ABI
pushd $ENTER_DIR/build/$ARM_ABI
cmake \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=$ARM_ABI \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DANDROID_ARM_NEON=ON \
-DANDROID_PLATFORM=android-19 \
-DANDROID_STL=c++_static \
-DCMAKE_BUILD_TYPE=Release ../.. && \
make -j16
popd
$ANDROID_AR -rsc libmade.a $(find $ENTER_DIR/build/$ARM_ABI -name "*.o")
mkdir lib
mkdir lib/$ARM_ABI
mv libmade.a lib/$ARM_ABI
2、编写CMakeLists.txt文件
cmake_minimum_required(VERSION 3.6)
project("NAME")
set(CMAKE_CXX_STANDARD 14)
find_library(OPENGLES2_LIBRARY GLESv2)
IF (UNIX)
message("unix")
IF (NOT DEFINED TARGET_PLATFORM)
set(TARGET LINUX)
add_definitions(-DLINUX)
ELSEIF (${TARGET_PLATFORM} STREQUAL ANDROID)
message("android")
set(TARGET ANDROID)
add_definitions(-DANDROID)
ENDIF ()
ENDIF (UNIX)
set(ANDROID_SYSROOT "Android_NDK路径/sysroot")
set(SYS_IN ${ANDROID_SYSROOT}/usr/include)
include_directories(${SYS_IN})
add_library(${PROJECT_NAME} src/main.cpp)
target_link_libraries(${PROJECT_NAME})
3、编写c/c++文件
#ifdef ANDROID
#include <GLES2/gl2.h>
#endif
4、可能存在问题
在CLion或者VSCode中可能遇到引用头文件错误的问题,比如头文件有红色下划线,提示找不到文件等。但是运行脚本构建确实正常的。
问题分析:
以上步骤是基于脚本构建,构建的过程中指定了运行的工具链和相关环境,而在第三方编辑器中有自己的运行默认工具链和环境,只需要合理配置即可。
例如在Clion中
1、设置-Build,Execution,Deployment-Toolchains中:
新增一个NDK的配置,并选在Make、C Compiler 、C++Compiler使用NDK提供的工具
NDK/prebuilt/darwin-x86_64/bin/make
NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang
NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++
2、设置Build,Execution,Deployment-CMake中:
新增一个Android的配置,在Toolchain中选择刚刚配置的的NDK
版权声明:本文为hongye_main原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。