Linux conan+cmake管理的项目如何进行多架构编译(x86_64及交叉编译arm64)

使用Conan+CMake进行Linuxarm64交叉编译实践

一 背景知识

Conan 和 CMake 是两个非常流行的跨平台开发工具,它们可以让开发者轻松管理依赖和构建项目,支持多种操作系统和架构。下面是一些关于 conan 和 cmake 的介绍:

  1. Conan
    Conan 是一个用于管理 C++ 依赖项的开源工具。它可以从公共或私有存储库中自动下载和安装依赖项。Conan 可以轻松地管理不同版本的依赖项,并支持多个操作系统和编译器。使用 Conan,开发者可以更加轻松地构建跨平台应用程序。

  2. CMake
    CMake 是一个跨平台的构建系统,它可以自动生成 Makefile、Visual Studio、Xcode 等构建系统所需的文件。CMake 可以让开发者轻松地构建跨平台应用程序,而无需编写复杂的构建脚本。CMake 支持多种编译器和操作系统,并且可以与其他工具(如 conan)配合使用。

  3. Conan 和 CMake 的结合
    Conan 和 CMake 可以很好地结合使用,以便更好地管理依赖项和构建项目。使用 Conan,开发者可以轻松地下载和安装依赖项,并在 CMake 中使用。在使用 CMake 构建项目时,可以使用 Conan 提供的工具来检查依赖项是否已正确安装,并自动下载和安装未安装的依赖项(conan_cmake_install)。这使得开发者可以更加高效和准确地构建跨平台应用程序。

总之,使用 conan + cmake 可以让开发者更加轻松地管理依赖和构建项目,支持多种操作系统和架构,从而使跨平台开发更加容易和高效。

目前,xxx项目已经完成了Mac(x86_64/arm64)、Windows(x86/x64)和Linux(x86_64)三个桌面端系统及相关架构的统一管理和编译。现在,我们正在补充Linux arm64交叉编译的支持,以满足更广泛的需求。

二 如何实现Linux arm64交叉编译

工具 交叉编译本机环境 交叉编译目标环境
CMake CMAKE_HOST_SYSTEM_NAME CMAKE_SYSTEM_NAME
Conan BUILD HOST

在 CMake 中,CMAKE_HOST_SYSTEM_NAME 变量表示编译器运行的本地系统名称,而 CMAKE_SYSTEM_NAME 变量表示目标系统的名称。在交叉编译时,需要将 CMAKE_SYSTEM_NAME 设置为目标系统的名称,以便 CMake 可以正确地生成构建文件。

Conna 要求交叉编译必须指定两个 profile 信息,一个表示 BUILD 环境就是当前编译环境信息,一个表示 HOST 目标系统环境信息。这样它才会启用交叉编译配置。当然我们可以在 CMakeLists.txt 会判断是否指定了 CONAN_PROFILE_BUILD 和 CONAN_PROFILE_HOST,没有指定时我们可以启用自动判断。

通过 CMake 传递 CONAN_PROFILE_BUILD 和 CONAN_PROFILE_HOST 参数,我们就可以自动化将这些配置信息传递给 Conan,无需手动去执行 Conan install 流程,减少出错可能和麻烦的步骤。

1. 交叉编译工具链配置(cmake用)

# CMakeLists.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值