一 背景知识
Conan 和 CMake 是两个非常流行的跨平台开发工具,它们可以让开发者轻松管理依赖和构建项目,支持多种操作系统和架构。下面是一些关于 conan 和 cmake 的介绍:
-
Conan
Conan 是一个用于管理 C++ 依赖项的开源工具。它可以从公共或私有存储库中自动下载和安装依赖项。Conan 可以轻松地管理不同版本的依赖项,并支持多个操作系统和编译器。使用 Conan,开发者可以更加轻松地构建跨平台应用程序。 -
CMake
CMake 是一个跨平台的构建系统,它可以自动生成 Makefile、Visual Studio、Xcode 等构建系统所需的文件。CMake 可以让开发者轻松地构建跨平台应用程序,而无需编写复杂的构建脚本。CMake 支持多种编译器和操作系统,并且可以与其他工具(如 conan)配合使用。 -
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
使用Conan+CMake进行Linuxarm64交叉编译实践

最低0.47元/天 解锁文章
535

被折叠的 条评论
为什么被折叠?



