Skip to content

Commit

Permalink
Use separate PDB files for compiling and linking in MSVC builds
Browse files Browse the repository at this point in the history
The two PDB files that the MSVC compiler and linker create are supposed
to be handled differently and should not share the same file path.
Using the same file path for both can result in corrupted PDB files and
longer build times.

Use $${TARGET}.vc.pdb in the OBJECTS_DIR for the compiler and
$${TARGET}.pdb (the default) for the linker.

Task-number: QTBUG-53895
Change-Id: I31f06d4a674a3aa2afe5b30499bae820e5caf2c4
Reviewed-by: Oswald Buddenhagen <[email protected]>
  • Loading branch information
jobor committed Jun 15, 2016
1 parent e3051e6 commit 3d3d65f
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions qmake/generators/win32/msvc_nmake.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -409,11 +409,14 @@ void NmakeMakefileGenerator::init()
project->values("QMAKE_DISTCLEAN").append(tgt + ".lib");
}
if (project->isActiveConfig("debug_info")) {
QString pdbfile = tgt + ".pdb";
// Add the compiler's PDB file.
QString pdbfile = var("OBJECTS_DIR") + project->first("TARGET") + ".vc.pdb";
QString escapedPdbFile = escapeFilePath(pdbfile);
project->values("QMAKE_CFLAGS").append("/Fd" + escapedPdbFile);
project->values("QMAKE_CXXFLAGS").append("/Fd" + escapedPdbFile);
project->values("QMAKE_DISTCLEAN").append(pdbfile);
project->values("QMAKE_CLEAN").append(pdbfile);
// Add the linker's PDB file to the distclean target.
project->values("QMAKE_DISTCLEAN").append(tgt + ".pdb");
}
if (project->isActiveConfig("debug")) {
project->values("QMAKE_CLEAN").append(tgt + ".ilk");
Expand Down

0 comments on commit 3d3d65f

Please sign in to comment.