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源代码中。