소스 검색

cmGeneratorTarget: Revert "always provide a compile PDB filename"

Revert commit 1a8712d31a (cmGeneratorTarget: always provide a compile
PDB filename, 2025-11-24).  It changed our long-standing conditions for
when a naming a compiler-generated `.pdb` file is explicitly named.
It also caused some `BuildDepends` and `RunCMake.BuildDepends` failures
in VS builds that went unnoticed before merging.

Issue: #27401
Brad King 5 일 전
부모
커밋
809e387a13
3개의 변경된 파일9개의 추가작업 그리고 27개의 파일을 삭제
  1. 9 4
      Source/cmGeneratorTarget.cxx
  2. 0 8
      Tests/MSVCDebugInformationFormat/CMakeLists.txt
  3. 0 15
      Tests/MSVCDebugInformationFormat/PdbCompileFileName.c

+ 9 - 4
Source/cmGeneratorTarget.cxx

@@ -1312,10 +1312,15 @@ std::string cmGeneratorTarget::GetCompilePDBName(
     return components.prefix + pdbName + ".pdb";
   }
 
-  // Always use a name for the compile-time database.
-  NameComponents const& components =
-    GetFullNameInternalComponents(config, cmStateEnums::RuntimeBinaryArtifact);
-  return cmStrCat(components.prefix, this->GetName(), ".pdb");
+  // If the target is PCH-reused, we need a stable name for the PDB file so
+  // that reusing targets can construct a stable name for it.
+  if (this->PchReused) {
+    NameComponents const& components = GetFullNameInternalComponents(
+      config, cmStateEnums::RuntimeBinaryArtifact);
+    return cmStrCat(components.prefix, this->GetName(), ".pdb");
+  }
+
+  return "";
 }
 
 std::string cmGeneratorTarget::GetCompilePDBPath(

+ 0 - 8
Tests/MSVCDebugInformationFormat/CMakeLists.txt

@@ -79,11 +79,3 @@ endif()
 if(CMake_TEST_Fortran)
   verify(Fortran verify.F90)
 endif()
-
-# Issue 27401; 4.2.0 regression
-add_library(PdbCompileFileName PdbCompileFileName.c)
-target_compile_definitions(PdbCompileFileName
-  PRIVATE
-    "TARGET_DIRECTORY=\"$<TARGET_INTERMEDIATE_DIR:PdbCompileFileName>\"")
-set_property(TARGET PdbCompileFileName PROPERTY
-  MSVC_DEBUG_INFORMATION_FORMAT "ProgramDatabase")

+ 0 - 15
Tests/MSVCDebugInformationFormat/PdbCompileFileName.c

@@ -1,15 +0,0 @@
-#include <stdio.h>
-
-int main(int argc, char* argv[])
-{
-  int ret = 0;
-  char const* fname = TARGET_DIRECTORY "/PdbCompileFileName.pdb";
-  FILE* f = fopen(fname, "r");
-  if (f) {
-    fclose(f);
-  } else {
-    printf("Failed to open PDB file '%s'\n", fname);
-    ret = 1;
-  }
-  return ret;
-}