5

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

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

来自https://github.com/microsoft/vcpkg quickstart 说:

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

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

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

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

如何设置另一个vcpkg使用该特定工具链的目录树?

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

4

1 回答 1

5

您应该编写一个引用所需工具链的三元组文件。创建${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 工具链

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)
于 2019-12-06T09:59:52.233 回答