cmake交叉编译
前置条件:linux系统已经安装cmake工具,unbuntu下安装方法sudo apt install cmake,已下载好交叉编译工具链
x86平台的编译方法
camke <dir> #CMakeLists.txt所在目录
make -j8
其他平台
先设置PATH变量,增加交叉编译工具目录。
在本项目目录新建一个toolchain.cmake文件,增加如下代码,然后在CMakeLists.txt 中include(toolchain.cmake),当然,也可以直接写在CMakeLists.txt中
set(CMAKE_SYSTEM_NAME Linux) #一定要加
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc-5)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++-5)
set(CMAKE_SYSROOT /home/huanglidi/work/tool/CrossSysroot/16.04)
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${CMAKE_SYSROOT}/opt/bros ${CMAKE_SYSROOT}/opt/cyber)
set(CMAKE_LIBRARY_PATH ${CMAKE_SYSROOT}/usr/local/lib ${CMAKE_SYSROOT}/usr/lib/aarch64-linux-gnu ${CMAKE_SYSROOT}/usr/lib)
set(CMAKE_INCLUDE_PATH ${CMAKE_SYSROOT}/usr/local/include ${CMAKE_SYSROOT}/usr/include/aarch64-linux-gnu ${CMAKE_SYSROOT}/usr/include)
变量解释:
set(CMAKE_SYSTEM_NAME Linux):该指令必须存在,其目的是设置目标机使用的操作系统名称,支持Linux,QNX,WindowsCE,Android等。如果没有操作系统,那么就写 Generic。执行该指令后,cmake 变量——CMAKE_CROSSCOMPILING 会自动被设置为 TRUE,此时 cmake 就会“知道“现在执行的是交叉编译;
由于 cmake 无法自动获取目标机器信息,因此需要显式指明编译工具。
CMAKE_C_COMPILER:设置 C 编译器;如果没有设置PATH环境变量,先设置PATH变量
CMAKE_CXX_COMPILER:设置 c++ 编译器
注意:因为编译生成程序时,不单单需要编译器,还需要链接器等其他工具,所以要将交叉编译工具所在目录设置到PATH,才能保证生成成功!!
编译命令
mkdir build
cd build
cmake ../
make -j8

浙公网安备 33010602011771号