.res文件需要放在源代码控制中吗?

8
在C++Builder XE5中,我的理解是二进制文件MyProject.res(由编译器在与.cbproj文件相同的目录中创建)包含程序图标和项目版本详细信息的编译版本(尽管我的似乎还包含XML清单)。但这些信息也包含在.cbproj文件和.ico files中;如果我删除.res文件,那么下次打开项目时它似乎会被重新创建。因此,将*.res标记为不在源代码控制中是否安全?(我使用git)。或者是否可以将其生成在与对象文件相同的目录中,以便它不会与源代码混合在一起?(在C++Builder 5中,这肯定是不安全的-如果您删除了.res文件,它会抱怨找不到它,并且您将失去您的图标。)
更新:这是否也适用于.tlb文件?这似乎是基于.ridl文件编译的,如果我删除它,则会自动生成。

关于资源文件:如果您是单个开发人员,则我认为没有必要将.res文件放在源代码控制下。然而,我的一些同事报告了多用户项目中的问题-从存储库(subversion)拉取文件后资源被“搞乱”。具体来说,是TImageList图像的透明度/背景颜色属性。但它似乎只影响某些系统,不幸的是我不知道原因。正因为这个原因,我们在源代码控制中包括.res文件。 - HvS
注意:我所提到的引起问题的文件是 .dfm 文件。 - HvS
DFM肯定需要在源代码控制中,因为它们存储了表单的详细信息!据我所知,DFM和RES之间没有关系? - M.M
更新:几个月后,仍然没有遇到将“.res”和“.tlb”排除在源代码控制之外的任何问题。 - M.M
1
@MattMcNabb:还要确保在将DFM文件放入源代码控制之前将其设置为文本模式,这样您就可以对它们执行差异操作等。 - Remy Lebeau
2个回答

4
C++ Builder 6.0及更高版本会在删除后重新创建RES文件。我将它们视为其他临时/构建文件(如OBJ文件)并不将其放入版本控制软件中。尽管如此,我每晚都有包括所有这些文件的备份,我认为这仍然是一个好的做法。关于TLB文件,我不确定。我会暂时删除(即重命名)其中一个文件,并查看是否能够重新创建到相同的状态。如果是这样的话,应该与RES文件相同。但对于第三方库来说情况并非如此,如果你只有编译后的资源,那么我仍然不会将它们放入我的版本控制中,因为我不会修改它们,我只有备份。

2
在C++Builder 2009引入RIDL之前,删除TLB文件是不安全的,否则您将丢失类型库。引入RIDL后,TLB成为一个中间文件,在需要时重新创建。 - Remy Lebeau

3
值得一提的是,TFS源代码控制默认情况下会排除*.res文件但包括*.tlb文件。
因此,您应该期望与构建相关联的*.res文件将被创建。如果构建不存在,则应包含*.res文件。
我猜想您关于*.tlb文件也会被构建是正确的,但是TFS可能不会默认排除它们,因为这种扩展名不完全是唯一用于OLE类型库文件的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接