[CMake] PDB file placement

Filip Konvička filip.konvicka at logis.cz
Tue Jul 22 11:05:24 EDT 2008


Hi,

cmake works nice so far :-) Thanks guys!

Recently my MSVC builds have been quite slow, so I decided to move the 
PDB files to a ramdisk. (This really speeds things up, I'm using a 
quad-core CPU so mspdbsrv.exe gets in the way quite often.)

I found out that setting the PDB pathname in CMake is not possible. I 
would like to specify something like

   ProgramDataBaseFileName="R:\$(TargetName)-$(ConfigurationName)"

(MSVC appends ".pdb" or ".idb" as necessary). However, contrary to what 
I've seen on the wiki, setting TARGET_PDB (using SET or 
SET_TARGET_PROPERTIES) does nothing.

So I checked the source code, and the generator 
(cmLocalVisualStudio7Generator.cxx) does this (at about 3 places):

     fout <<  "\t\t\t\tProgramDataBaseFileName=\""
          << target.GetDirectory(configName) << "/"
          << target.GetPDBName(configName) << "\"\n";

This suggests that even if I managed to change PDB name somehow, I could 
not change the directory.

So I ended up compiling my own cmake.exe with the above changed to my 
hard-coded path, but I would really like to see this configurable.


By the way, I can't see why you bother retrieving all pathnames in the 
generator. Hardcoding something like

     fout << 
"\t\t\t\tProgramDataBaseFileName=\"$(TargetDir)$(TargetName)"\n";

would have exactly the same effect. IMHO this would also be easier to 
modify so that the users can choose their own preferred PDB location.


Is there some other way of achieving what I need (apart from 
re-compiling cmake and/or waiting for new options)?

Thanks,
Filip



More information about the CMake mailing list