cmake交叉编译android

在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)

你可能感兴趣的:(cmake交叉编译android)