在window上使用cmake和ndk-build工具编译能在android设备上运行的程序
step 1: 下载 android设备版本对应的ndk工具,这里已android-ndk-r21e为例
step 2: 确定编译的android版本,修改ANDROID_PLATFORM=android-29
step 3: main.cc为自己定义的程序
需要编译的时候,执行./build.sh ,后会在build目录下生成crossbuild-demo程序,
使用adb push crossbuild-demo到android设备中,并赋予可执行全选后,即可在android设备上运行
目录
├── CMakeLists.txt
├── build.sh
├── include
└── main.cc
build.sh脚本
#/bin/bash
export ANDROID_NDK=/home/linux/work/build_tools/android-ndk-r21e
[ -d "build" ] && rm -r build
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_NDK=$ANDROID_NDK \
-DANDROID_PLATFORM=android-29 \
..
make
cd ..
CMakeLists.txt
cmake_minimum_required (VERSION 3.0)
project (crossbuild-demo)
add_compile_options(-D BUILD_JAVA=OFF -std=c++11)
set(C_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/include)
#添加头文件路径
include_directories(${C_INCLUDE})
#指定链接库路径
LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
#添加编译选项
add_compile_options(-I ${C_INCLUDE})
#将当前目录下的源文件,如c,cpp,h文件的名称保存到DIR_SRCS变量中
AUX_SOURCE_DIRECTORY(./ DIR_SRCS)
#生成库
#add_library (libcbdemo ${DIR_LIB_SRCS})
#生成可执行文件
add_executable(crossbuild-demo ${DIR_SRCS})
#添加额外的库文件
#TARGET_LINK_LIBRARIES(crossbuild-demo pthread)