CMake问题:如何使用vcpkg自动安装依赖项?

时间:2020-04-03 17:08:44

标签: c++ cmake vcpkg

我正在Linux机器上进行c ++项目,它使用了几个Boost库。我已使用vcpkg将它们安装在系统上,并使用vcpkg提供的工具链进行构建。我的问题是: 我如何定义依赖项,以便在构建依赖项时将它们自动安装在其他系统上? 通过在conanfile.txt中定义依赖项,柯南可以做到这一点。如何使用vcpkg进行相同操作?

Edit1:我发现autovcpkg可以完成我想做的工作,但是可以在cmakelists.txt内部还是由vcpkg本身完成相同的工作?

2 个答案:

答案 0 :(得分:1)

我已经找到了autovcpkg,它可以做我想做的工作,但是可以在cmakelists.txt内部还是由vcpkg本身完成相同的工作?

您可以通过提供CONTROLportfile.cmake文件来为您的库或可执行文件编写vcpkg端口。在CONTROL文件中,您定义所有依赖项和可能的功能,而portfile包含构建指令。您可以使用vcpkg create <myport> <url> <filename>从可以根据需要定制的模板创建CONTROLportfile.cmake。 连同端口覆盖层,该端口也可以供其他人使用,而无需合并到vcpkg / master

答案 1 :(得分:0)

如果您将 vcpkg 作为项目的子模块,define a manifest 用于您希望 vcpkg 构建的库,并且正在使用 vcpkg CMake 工具链 - 那么您将获得所需的一切。

  1. 将 vcpkg 添加为子模块意味着您的用户无需自行安装,CMake 工具链会代您安装。这也意味着您可以修复软件包版本
  2. 使用清单文件是您在 CMake 配置阶段以编程方式告诉 vcpkg 获取和构建哪些包的方式
  3. 使用 CMake 工具链文件是将其与项目构建系统相关联的唯一方法
$ git clone .../my_project
$ cd ./my_project
$ git submodule update --init
$ mkdir ../build
$ cd ../build
$ cmake ../my_project
-- Running vcpkg install
-- Running vcpkg install - done
...