【问题标题】:How to install packages when cloning project that uses vcpkg克隆使用 vcpkg 的项目时如何安装软件包
【发布时间】:2023-03-23 18:35:01
【问题描述】:

我正在尝试使用 vcpkg 包管理器,但我遇到了一些问题。 我有一个使用 cmake 和 vcpkg 的 c++ 项目,并使用 vcpkg 来安装 cache2 包。 现在一切正常,但是一旦我推送项目并克隆它,我就找不到如何恢复已安装的包。

我所做的是这样的:

  • 安装 vcpkg 作为子模块
  • 使用 vcpkg 安装 cache2
  • 在 cmake 中添加了 cache2

到目前为止,当我推送和克隆项目时,一切正常。

  • git clone --recurse-submodules
  • .\extern\vcpkg\bootstrap-vcpkg.bat
  • vcpkg 列表

现在似乎没有安装任何东西,我不希望每个人在克隆时都将所有软件包一一安装。克隆时有没有办法自动安装所有包?

【问题讨论】:

  • 构建输出不是存储库的一部分。我相信vcpkg/.gitignore 文件已设置为忽略它。
  • 是否有办法在克隆时自动安装所有包? 如果将输出放入存储库,它可能会很大。我的 vcpkg 文件夹超过 70GB
  • 因此,如果用户克隆您的项目,则必须手动单独安装所有软件包?您可以使您的软件端口依赖于列表包,因此如果他们 vcpkg 安装您的软件,它将安装依赖包作为构建过程的一部分。
  • 我为移植到 vcpkg 的软件创建了自己的覆盖端口。如果你已经在你的软件中使用 CMake,那么创建一个端口可能并不太难。

标签: c++ git cmake vcpkg


【解决方案1】:

我找到了一个使用 vcpkg 清单的不错的解决方案,它仍然是一个实验性功能,但我还没有遇到任何问题。为了使用清单,请执行以下操作:

  • 在您的根文件夹中添加一个包含以下内容的 vcpkg.json 文件:
{
  "name": "projectname", // should be lowercase, uppercase will give an error
  "version-string": "0.1.0",
  "dependencies": [ // add here your dependencies you would normally install with vcpkg install [package name]
    "catch2"
  ]
}
  • 运行:vcpkg install --feature-flags=manifests,这将安装阵列中的所有依赖项。

要删除包,只需从列表中删除依赖项并运行上述命令。

【讨论】:

    猜你喜欢
    • 2023-02-05
    • 1970-01-01
    • 2016-04-19
    • 2017-03-30
    • 2022-07-07
    • 2017-12-30
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多