cmake交叉编译

前置条件:linux系统已经安装cmake工具,unbuntu下安装方法sudo apt install cmake,已下载好交叉编译工具链

x86平台的编译方法

camke <dir> #CMakeLists.txt所在目录
make -j8

其他平台

先设置PATH变量,增加交叉编译工具目录。

在本项目目录新建一个toolchain.cmake文件,增加如下代码,然后在CMakeLists.txtinclude(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):该指令必须存在,其目的是设置目标机使用的操作系统名称,支持LinuxQNXWindowsCEAndroid等。如果没有操作系统,那么就写 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
posted @ 2024-04-12 15:27  HL棣  阅读(58)  评论(0编辑  收藏  举报