这几天在想看一些开源项目,如果能用 visual studio 来阅读的话,那就会很优雅。现在的项目很多都已经使用 cmake 作为构建工具,那这里我们要编译的项目是 Triton。

傻逼 c++ 包管理 就是一堆屎 总会出现莫名的 bug 请放弃使用 珍爱生命

vcpkg

vcpkg 使用起来非常方便

下载、编译

git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
.\vcpkg\vcpkg integrate install

之后安装我们需要的依赖项

.\vcpkg.exe install z3:x64-windows
.\vcpkg.exe install capstone:x64-windows

x64-windows 指的是 vcpkg 的 triplet,这里大概可以理解成平台

vcpkg 支持的平台如下

.\vcpkg.exe help triplet
Available architecture triplets
VCPKG built-in triplets:
  arm64-windows
  x64-linux
  x64-osx
  x64-uwp
  x64-windows-static
  x64-windows
  x86-windows

VCPKG community triplets:
  arm-ios
  arm-linux
  arm-mingw-dynamic
  arm-mingw-static
  arm-windows
  arm64-ios
  arm64-linux
  arm64-mingw-dynamic
  arm64-mingw-static
  arm64-osx
  arm64-uwp
  arm64-windows-static
  s390x-linux
  wasm32-emscripten
  x64-ios
  x64-mingw-dynamic
  x64-mingw-static
  x64-osx-dynamic
  x64-windows-static-md
  x86-ios
  x86-mingw-dynamic
  x86-mingw-static
  x86-uwp
  x86-windows-static-md
  x86-windows-static
  x86-windows-v120

cmake

来到项目下 build 文件夹中

cmake -G "Visual Studio 16 2019" -A x64    "-DCMAKE_TOOLCHAIN_FILE=E:/code/vcpkg/scripts/buildsystems/vcpkg.cmake" ../

会发现报了些错误,大概的意思是 找不到 z3

我们需要修改一下 CMakeList.txt 文件

find_package

find_package 就是查找其他的依赖库,通过 Imported Targets 传递,比如

INTERFACE_INCLUDE_DIRECTORIES, INTERFACE_COMPILE_DEFINITIONS, INTERFACE_COMPILE_OPTIONS, INTERFACE_LINK_LIBRARIES, and INTERFACE_POSITION_INDEPENDENT_CODE

这些变量

搜索路径

vcpkg 设置 CMAKE_PREFIX_PATH ,传递给 find_package

REQUIRED

表明当前 package 是必须的,如果没找到就会给出报错信息,这个选项可以被换成 QUIET

CONFIG

查找并加载以下文件

<PackageName>Config.cmake or <lower-case-package-name>-config.cmake

0 条评论

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。