I have recently gotten into the guts of MSBuild to factor out commonalities among nearly twenty *.vcxproj project files. Previously I had been manually setting everything with Visual Studio, but the commonalities were too much to ignore in the face of the fact that I have several new configurations to produce now.
I'd like to compare the compiler and linker switches used in the old and new build process. I noticed that this information seems to be contained in e.g. cl.command.1.tlog and link.command.1.tlog files in the $(IntDir)$(TLogLocation) directory after building. They seem to be there whether I use MSBuild or use Visual Studio to perform the build. I've scoured C:\Program Files (x86)\MSBuild's files, and I have located places where I would think this should occur, but have come up short. I realize that I could just aggregate these outputs with a script and compare them, but for my own edification I was trying to locate the MSBuild variable that contains the switches for each *.c / *.cpp / *.obj file. When I couldn't locate that, I started looking for where these *.tlog files were being generated.
At this point I have theorized that perhaps it is the executables themselves doing this work (cl.exe / link.exe), but I'm not 100% convinced of this. Normally I suppose I would move on, but it raises a question in my mind as to how someone would integrate a new tool into MSBuild. Is there an interface somewhere that dictates that you have to follow this paradigm? e.g. if the new tool were called foo.exe, it would be required to place foo.command.1.tlog and other foo.*.1.tlog files for tracking?