PCL-1.9.1 for Android ndk21编译
说明
之所以记录下自己编译android版的pcl过程,主要原因是:
- 按照https://github.com/bashbug/pcl-for-android说明,无法完成编译,报错原因多方面,主要原因是conan的公共仓库https://conan.bintray.com已经失效,部分依赖的下载地址失效
- 我需要基于R21版NDK编译出来的PCL库,从而兼容其他使用了R21版的NDK模块;之前在windows下使用了别人编译好的1.8.0版本的pcl库,该版本的pcl库支持NDK16,不支持NDK21。
- 我的开发环境在windows下,因此,需要整理出可以在windows下使用PCL库的配置
故此,通过交叉编译,编译出基于r21版本NDK的1.9.1版本的pcl库,并在windows下使用Android studio成功编译使用pcl库的功能。
环境
操作系统:Ubantu18.04.6 LTS
Python:3.6.9
cmake:3.10.2
conan:1.44.1
GCC:8.4.0
git:2.17.1
创建虚拟环境
如果不想破坏当前的编译环境,可以使用venv创建一个虚拟环境:
mkdir pcl-1.9.1
cd pcl-1.9.1
python -m venv venv
source venv/bin/acticate
当然,也可以不创建虚拟环境,直接在当前环境下进行。虚拟环境的好处就是不会破坏当前的各项配置。
安装所需环境
sudo apt install cmake git make ninja python3-pip
sudo pip3 install conan
由于conan默认的仓库https://conan.bintray.com实效,因此,要确保conan使用的版本较新,并导入新的根证书,才可以正常使用conan仓库。
安装最新的根证书
conan config install https://github.com/conan-io/conanclientcert.git
设置conan仓库
conan remote add conan-center https://center.conan.io
conan remote list #查看设置是否成功
conan-center: https://center.conan.io [Verify SSL: True]#查询到的仓库地址
拉取项目
git clone https://github.com/bashbug/pcl-for-android.git
修改NDK版本
修改conan-profile下面的文件,把[build-requires]下面的android-toolchain/r20@bashbug/stable修改为android-toolchain/r21@bashbug/stable即可。
打开conanfiles/android-toolchain/conanfile.py,修改version = "r20"为version = “r21”
修改boost源码下载地址
打开conanfiles/boost/conanfile.py,修改source(self)方法的内容如下:
tools.get("https://boostorg.jfrog.io/artifactory/main/release/{}/source/{}.tar.gz".format(self.version, self.folder_name