【问题标题】:vcpkg manifest install system widevcpkg 清单安装系统范围
【发布时间】:2022-10-24 15:04:09
【问题描述】:

刚刚在我的 cmake 项目上尝试了Vcpkg Manifest,它很酷,但是有例外。

我的项目依赖于opencv,vcpkg安装opencv需要很长时间。所以我意识到每次我将项目克隆到不同的文件夹中时,我都不希望 vcpkg 下载/安装 opencv。

是否可以使用 Vcpkg Manifest 但使其在系统范围内安装库而不是在本地安装到项目中?

或者至少不在构建目录中,所以可以重用它?

【问题讨论】:

    标签: c++ windows cmake lib vcpkg


    【解决方案1】:

    不,您不能在清单模式下在系统范围内安装库。 但是二进制文件是缓存的,因此如果您在多个项目中使用一个库,您不必从头开始构建它。 https://github.com/microsoft/vcpkg/blob/master/docs/users/binarycaching.md

    【讨论】:

      【解决方案2】:

      我滥用了 vcpkg 的--x-install-root 来达到与清单模式相似的结果。

      --x-install-root= (Experimental) 指定安装根目录

      在您的项目文件夹下,您可以使用此参数将该项目的依赖项安装到系统全局目录中,以便所有项目可以在系统范围内共享已安装的包。例如,就我而言,我将所有软件包安装到 $VCPKG_ROOT/installed 目录中,如下所示:

      vcpkg install --x-install-root=$VCPKG_ROOT/installed
      

      如果您(ab)以这种方式使用它,您甚至可以在任何地方使用vcpkg list

      【讨论】: