【问题标题】:CMake VS different binaries for different configsCMake VS针对不同配置的不同二进制文件
【发布时间】:2015-09-05 20:33:15
【问题描述】:

如果这可能是一个愚蠢的问题,我很抱歉,但我对 CMake 很陌生,我试图弄清楚如何做一些看起来不太直接或没有真正记录的事情(至少直接...... )。

我正在尝试使用 CMake 创建一个跨平台的 GLES 应用程序,并且我计划使用 ANGLE (https://github.com/MSOpenTech/angle) 来支持 Windows Store 和 Windows Phone。我目前正试图将模板提供的以下部分模板移植到 CMake 文件中:

<AngleBinPath Condition=" '$(AngleBinPath)' == '' ">$(AngleRootPath)\winrt\8.1\windows\src\$(Configuration)_$(Platform)\</AngleBinPath>

这个变量稍后会被用来链接到库:

<Link>
  <AdditionalDependencies>$(AngleBinPath)lib\libGLESv2.lib;$(AngleBinPath)lib\libEGL.lib;%(AdditionalDependencies)</AdditionalDependencies>
...

然后最后复制 DLL 文件:

<ItemGroup Label="ANGLE">
    <None Include="$(AngleBinPath)libEGL.dll">
      <DeploymentContent>true</DeploymentContent>
    </None>
    <None Include="$(AngleBinPath)libGLESv2.dll">
      <DeploymentContent>true</DeploymentContent>
    </None>
</ItemGroup>

当然,现在有大量关于如何将外部库与 CMake 一起使用的信息,但我找不到任何关于我应该如何实现这样的信息的信息,其中每个架构都有不同的二进制文件作为以及调试和发布。我想这一定是一个普遍的问题,但它让我很难过。有什么想法吗?

PS。我猜想在 CMake 端为每个配置生成不同的 VS 项目的标志将作为最后的手段,但是当一个项目在正常情况下可以完成时,拥有这么多项目可能会很痛苦。

【问题讨论】:

    标签: c++ visual-studio visual-c++ cmake windows-store-apps


    【解决方案1】:

    由于 3.0 版 CMake 有 generator-expressions,这对于像 VS 这样的多配置 IDE 的表达特定配置逻辑来说实际上是一件好事。

    链接:

    target_link_libraries(your_target
        ${AngleRootPath}\winrt\8.1\windows\src\$<CONFIG>_$<PLATFORM_ID>\lib\libGLESv2.lib)
    

    安装:

    install(FILES
        ${AngleRootPath}\winrt\8.1\windows\src\$<CONFIG>_$<PLATFORM_ID>\lib\libGLESv2.lib
        ...)
    

    【讨论】:

      猜你喜欢
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2016-01-13
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      相关资源
      最近更新 更多