2015-09-05 21 views
0

對不起,如果這可能是一個愚蠢的問題,但我是非常新的CMake和我試圖找出如何做一些看起來不是非常直接或真正記錄(至少直接...)。CMake VS不同的二進制文件對於不同的配置

我正在嘗試使用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> 

當然現在是信息的關於應該如何去使用外部庫與CMAK一個像樣的量e但是我找不到任何有關如何執行類似這樣的事情的信息,其中每個體系結構都有不同的二進制文件以及調試和發佈。我想這肯定是一個普遍的問題,但它讓我難堪。有任何想法嗎?

PS。我想CMake方面的標誌爲每個配置生成不同的VS項目將作爲最後的手段,但它可能是一個真正的痛苦,必須有一個單一的人可以在正常情況下做這麼多的項目。

回答

2

自3.0版本CMake有generator-expressions,這對於像VS這樣的multiconfig 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 
    ...) 
相關問題