In C++Builder XE5.
My understanding is that the binary file MyProject.res
(which is created by the compiler in the same directory as the .cbproj
file) contains compiled versions of the program icon and the project version details (although mine also seems to contain an XML manifest).
But this info is also contained in the .cbproj
file and the .ico files
; and if I delete the .res
file then it seems to get recreated exactly was it was next time I open the project.
So is it safe to mark *.res
as not being in source control? (I use git
). And/Or is it possible to have it generated in the same directory as the object files instead, so it's not mixed in with the source?
(This certainly wasn't safe in C++Builder 5 - if you deleted the .res file then it complained it couldn't find it, and you lost your icons).
Update: Does this also apply to the .tlb
file? This seems to be compiled based on the .ridl
file, and if I delete it then it is automatically regenerated.
C++ Builder 6.0 and later will recreate RES files if deleted. I treat them as other temporary/build files (like OBJ files) and do not put them in version control software. I do have nightly backups that include all of these files though, which I think is still good practice.
I am not sure about TLB files. I would temporarily delete (aka-rename) one and see if it gets recreated to the same state. If so, should be same as RES files.
This does not hold true for 3rd party libraries though, if all you have is compiled resources. In that case, I still do not place in my version control though, since I am not going to be modifying them. I just have my backups.
For what it's worth, the TFS source control defaults are to exclude *.res
but include *.tlb
.
So you should expect *.res
files to be created by their associated builds. If the build isn't going to be present, then the *.res
file should be included.
I suspect that you're right about *.tlb
files being built as well, but perhaps TFS doesn't exclude these on default because the extension isn't entirely unique to OLE type library files alone.