如何将 Linux 中的 vcpkg 与交叉构建工具链以及 sysroot 集成?

2024-01-02

我的问题是,如何将 Linux 中的 vcpkg 与交叉构建工具链以及 sysroot 集成? 例子:

  • 构建机器是fedora30
  • 交叉构建工具链是x86_64-centos7-gnu

from https://github.com/microsoft/vcpkg https://github.com/microsoft/vcpkg快速入门 说:

> git clone https://github.com/Microsoft/vcpkg.git
> cd vcpkg

PS> .\bootstrap-vcpkg.bat
Linux:~/$ ./bootstrap-vcpkg.sh

在我的机器上我安装了 gcc 9.1,它被检测到vcpkg的 bootstrap.sh 并且工作正常;

同时,我构建了一个用于交叉构建的工具链,它位于$HOME/cross/x64_86-centos7-linux-gnu/

我怎样才能设置另一个vcpkg使用该特定工具链的目录树?

通过“使用”,我的意思是 vcpkg 及其所有包应该由该工具链编译,并且使用 vcpkg 的 toolchain_file '$vcpkg_home/scripts/buildsystems/vcpkg.cmake' 的项目都应该将该工具链作为 $CC 和构建工具集?


你应该写一个三元组文件 https://github.com/microsoft/vcpkg/blob/master/docs/users/triplets.md引用您想要的工具链。创建文件${VCPKG_ROOT}/triplets/x64-centos7有内容

set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)

set(VCPKG_CMAKE_SYSTEM_NAME Linux)

set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE /your/cmake/toolchain.cmake)

/your/cmake/toolchain.cmake成为一个CMake工具链 https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-linux like

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR x64)

set(CMAKE_SYSROOT /your/sysroot)

set(tools $HOME/cross/x64_86-centos7-linux-gnu/)
set(CMAKE_C_COMPILER ${tools}/bin/your-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/your-g++)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Linux 中的 vcpkg 与交叉构建工具链以及 sysroot 集成? 的相关文章

随机推荐