2

在CMake中,雖然它是一個很好的跨平臺工具,但它對於管理複雜和大型配置也很棒。我碰到的一個障礙就是允許一個跨平臺的項目有專門的「Visual Studio」項目。也就是說,在編譯特定的視覺工作室項目時,我需要CMake的輸出來擁有表單設計器.resx文件。這在標籤結束如下:在cmake中添加Visual Studio .resx文件

<ItemGroup> 
    <EmbeddedResource Include="Form1.resX"> 
     <DependentUpon>Form1.h</DependentUpon> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
</ItemGroup> 

我能做到這一點,如果我可以寫一個自定義規則,或書寫文字,或以其他方式在什麼進入視覺工作室.vcxproj文件的更多低級別控制。

的.vcxproj.filters文件有對應的條目:

<ItemGroup> 
    <EmbeddedResource Include="Form1.resX"> 
     <Filter>Resource Files</Filter> 
    </EmbeddedResource> 
</ItemGroup> 

還有一個要求,讓加入.vcxproj資源文件:

<ItemGroup> 
    <ResourceCompile Include="app.rc" /> 
</ItemGroup> 

而到了.vcxproj。過濾器:

<ItemGroup> 
    <ResourceCompile Include="app.rc"> 
     <Filter>Resource Files</Filter> 
    </ResourceCompile> 
</ItemGroup> 

這是一個代碼改變CMake的或東西,否則會被添加?如果是代碼更改,則需要指出代碼更改的位置,我可以考慮進行必要的更新。

+0

可能是相關的:http://stackoverflow.com/questions/8183156/cmake-and-visual-studio-resource-files – arrowd

+0

討論資源文件,但.resX文件與設計者的.h文件關聯在.vcxproj中,並再次用於.vcxproj.filters文件中。它比資源更復雜。如果它們設置不當,那麼視覺工作室設計師將無法工作。由於這些都只是項目文件中的純文本項目,我看不出有任何理由CMAKE不能用於包含它們......但我不確定是否有某種方法可以使它無需代碼更改到CMAKE本身。 – DigitalInBlue

+0

比從未更好的遲到?我實現了這一點,已經在GitHub CMake項目上做了一個pull請求。希望這將成爲未來的一項功能! – DigitalInBlue

回答

0

你可以嘗試創建源集團:

source_group(Resources FILES Form1.resX) 

但是,這絕對不會有助於讓

<DependentUpon>Form1.h</DependentUpon> 
<SubType>Designer</SubType> 
+0

有沒有辦法建立一個「宏」或類似的直接寫入Visual Studio項目文件?這看起來越來越像代碼更改。我會做出改變,但是任何人都可以指出我在代碼中的哪個位置可以開始編織它? – DigitalInBlue

+0

好吧,有'file(READ ...)'和'file(WRITE ...)'命令,但我懷疑你可以使用它們來修改項目文件,因爲這些文件暫時不會生成,而CMake從'CMakeLists.txt'運行代碼。所以,沒有辦法做到這一點,AFAIK。 – arrowd

1

所以它不會出現好像有一個現有的解決這個問題, CMake的。我修改了CMake,允許它在Visual Studio解決方案文件中正確地包含.resX文件。初步測試表明一切正常,但需要更多測試。代碼更改非常簡單。但是,它引發的問題是手動管理Visual Studio的引用。 CMake確實有這方面的設施(儘管文檔缺乏)。問題主要是簿記,但是有很多選項可以爲參考,資源等配置,而CMake將允許您添加到項目中,而不是非常可配置。我要給我的版本進行試運行,如果一切順利的話,請將它發送到CMake源代碼中。