我很抱歉,如果这可能是一个愚蠢的问题,但我对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使用外部库的信息,但我找不到任何有关如何实现类似内容的信息,其中每个体系结构都有不同的二进制文件以及Debug和Release。我想这一定是一个常见的问题,但它让我难过。有什么想法吗?
PS。我想在CMake端有标志为每个配置生成不同的VS项目将作为最后的手段,但在正常情况下,只有一个项目可以做很多项目可能真的很痛苦。
答案 0 :(得分: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
...)