![](/img/trans.png)
[英]Correct way to include a header file that is different for precompiled binaries vs manually compiled binaries
[英]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.