繁体   English   中英

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

[英]CMake VS different binaries for different configs

如果这可能是一个愚蠢的问题,我感到很抱歉,但是我对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项目的标记将是最后的手段,但是当一个项目在正常情况下可以执行时,拥有如此多的项目可能真是一件痛苦的事情。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM