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

时间:2019-11-09 09:02:13

标签: linux cmake vcpkg

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

  • 构建机器为fedora30
  • 跨构建工具链为x86_64-centos7-gnu

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和构建工具集?

1 个答案:

答案 0 :(得分:0)

您应该编写一个引用您所需工具链的triplet file。创建包含内容的文件${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.cmakeCMake toolchain一样

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)