首页 文章

为不同的配置CMake VS不同的二进制文件

提问于
浏览
0

我很抱歉,如果这可能是一个愚蠢的问题,但我对CMake很新,我试图弄清楚如何做一些似乎不是很直接或真正记录的事情(直接至少......) .

我正在尝试使用CMake创建一个跨平台的GLES应用程序,我计划使用ANGLE(https://github.com/MSOpenTech/angle)来支持Windows应用商店和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项目将作为最后的手段,但在正常情况下单个人可以做这么多项目可能真的很痛苦 .

1 回答

  • 2

    从版本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
        ...)
    

相关问题