我的问题是,如何将 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(使用前将#替换为@)