We are currently using a single command line tool to build our product on both Windows and Linux.
Si far its works nicely, allowing us to build out of source and wit
Merge PDB files are possible but only can be done by cl.exe and link.exe. I do NOT know any standlone tools to merge PDB files.
You can use /PDB option to linker(I checked VC2005) to specify alternate pdb file name.
Microsoft suggests to also include PDB files(each obj has a corresponding PDB file) along with .LIB file.
You cannot archive PDB files inside .LIB file, I've tried it with VC2003, failed.
Compile with /Z7 can avoid PDB files for .LIB, but object files are large, unless the link.exe strip the debug information. If you have no /debug option to linker, then your exe/dll cannot be debugged.
Compiler(cl.exe) always write to vcXX.pdb file unless you use /Fd option to specify another name. Even when you use cl.exe to produce an executable "directly", It'll produce a vc80.pdb file and then the link.exe will produce the pdb file name same as the executable.
cl /Zi test.c
cl.exe -> vc80.pdb link.exe read vc80.pdb(the name is embedded in test.obj file) -> test.pdb
Each time cl /Zi /c compile a file, it'll try to modify the existing vcXX.pdb file instead of overwrite it.
I got the above conslusion by play with the compiler again and again, then capture sysinternals's procexp result and analyze it. Hope it helps.