CMake基础教程(36)Linux交叉编译

Posted 奇妙之二进制

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMake基础教程(36)Linux交叉编译相关的知识,希望对你有一定的参考价值。

https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html

很多时候,我们在开发的时候是面对嵌入式平台。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等

CMake给交叉编译预留了一个很好的变量CMAKE_TOOLCHAIN_FILE,它定义了一个文件的路径,这个文件即 XXX.toolchain.cmake,里面set了一系列你需要改变的变量和属性,包括CMAKE_C_COMPILER,CMAKE_CXX_COMPILER,如果用Qt的话需要更改QT_QMAKE_EXECUTABLE以及如果用BOOST的话需要更改的BOOST_ROOT(具体查看相关Findxxx.cmake里面指定的路径)。CMake为了不让用户每次交叉编译都要重新输入这些命令,因此它带来toolChain机制,简而言之就是一个cmake脚本,内嵌了你需要改变以及需要set的所有交叉环境的设置。

几个重要变量

CMAKE_SYSTEM_PROCESSOR

target 的处理器架构

CMAKE_SYSTEM_NAME:

即你目标机target所在的操作系统名称,比如ARM或者Linux你就需要写"Linux",如果Windows平台你就写"Windows",如果你的嵌入式平台没有相关OS你即需要写成"Generic",只有当CMAKE_SYSTEM_NAME这个变量被设置了,CMake才认为此时正在交叉编译,它会额外设置一个变量CMAKE_CROSSCOMPILING为TRUE.

以上是关于CMake基础教程(36)Linux交叉编译的主要内容,如果未能解决你的问题,请参考以下文章

CMake交叉编译

cmake交叉编译的使用

cmake:arm-xm-linux交叉编译工具链文件及交叉支持HTTPS的curl静态库

cmake:arm-xm-linux交叉编译工具链文件及交叉支持HTTPS的curl静态库

cmake指定交叉编译

CMake 交叉编译示例