首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vcpkg的预置替代

Vcpkg的预置替代
EN

Stack Overflow用户
提问于 2019-07-06 02:03:01
回答 1查看 460关注 0票数 0

我希望能够创建自定义覆盖,以添加基于我们当前配置的VcpkgConfiguration属性。

我们有一个使用Premake和vcpkg的C++项目。我们发现vcpkg与其他包含自己版本的类似库的项目冲突,所以我们不能使用它提供的全局集成。相反,我们将其作为子模块添加到我们的项目中,并通过带有自定义覆盖的premake将其链接起来:

代码语言:javascript
复制
p.override(p.vstudio.vc2010, "importExtensionTargets", function(base, prj)
      p.push('<ImportGroup Label="ExtensionTargets">')
      p.callArray(p.vstudio.vc2010.elements.importExtensionTargets, prj)
      p.pop('</ImportGroup>')
      p.push('<ImportGroup Label="ExtensionTargets">')
      p.w('<Import Project="$(SolutionDir)External/vcpkg/scripts/buildsystems/msbuild/vcpkg.targets"/>')
      p.pop('</ImportGroup>')
   end)

不幸的是,我们没有在我们的项目中使用常规的"Debug“或"Release”配置,因此默认情况下vcpkg不能正确链接。为了解决这个问题,我们修改了vcpkg.targets文件以识别本地分支中的配置。这并不理想,因为它迫使我们将分支重新设置为vcpkg,以便对其进行更新,并且如果该文件在其存储库中被修改,则可能会发生冲突。

目标文件允许您在包含目标之前设置VcpkgConfiguration属性,这正是我们想要做的。

基本上,我们希望能够通过过滤器调用命令,如下所示:

代码语言:javascript
复制
filter {"configurations:<SomeConfiguration>"}
    VcpkgConfig "Debug"

这将在propertygroup中添加以下内容

代码语言:javascript
复制
<VcpkgConfiguration>Debug</VcpkgConfiguration>

我们如何才能做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-06 04:33:01

问题似乎是importExtensionTargets是针对每个项目的,但您希望每个配置都是这样的。

你可以试着注册你的关键词

代码语言:javascript
复制
api.register {
      name= "VcpkgConfig",
      scope = "config",
      kind = "string",
    }

然后在您的自定义函数中

代码语言:javascript
复制
-- loop over all configurations 
for _, cfgName in ipairs(prj.configurations) do
     -- find config
    local cfg = project.findClosestMatch(prj, cfgName)

    if cfg.VcpkgConfig then

      p.push('<ImportGroup Label="ExtensionTargets">')
      p.push('<VcpkgConfiguration>'.. cfg.VcpkgConfig .. '</VcpkgConfiguration>')
      p.w('<Import Project="$(SolutionDir)External/vcpkg/scripts/buildsystems/msbuild/vcpkg.targets"/>')
      p.pop('</ImportGroup>')

    end

未测试。这样行得通吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56907549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档