فهرست منبع

Autogen: Fix header detection for paths with symbolic links

When Autogen searches the header for a source files in a target,
the expanded real path is used and not the (possibly symbolic) original path
of the source file.  If the source file path contains symbolic links, then the
correct `cmSourceFile` instance of the header won't be found, but a new one
will be generated.  This way all header source file properties get lost, which
is problematic especially for the `SKIP_AUTOMOC/UIC/GEN` properties.

This patch changes the header detection in Autogen to use the original source
file path instead of the expanded real source file path.

Fixes: #19346
Sebastian Holtermann 6 سال پیش
والد
کامیت
00e6b67e0c
1فایلهای تغییر یافته به همراه3 افزوده شده و 3 حذف شده
  1. 3 3
      Source/cmQtAutoGenInitializer.cxx

+ 3 - 3
Source/cmQtAutoGenInitializer.cxx

@@ -721,9 +721,9 @@ bool cmQtAutoGenInitializer::InitScanFiles()
       MUFile const& muf = *pair.second;
       if (muf.MocIt || muf.UicIt) {
         // Search for the default header file and a private header
-        std::string const& realPath = muf.RealPath;
-        std::string basePath = cmQtAutoGen::SubDirPrefix(realPath);
-        basePath += cmSystemTools::GetFilenameWithoutLastExtension(realPath);
+        std::string const& srcPath = muf.SF->GetFullPath();
+        std::string basePath = cmQtAutoGen::SubDirPrefix(srcPath);
+        basePath += cmSystemTools::GetFilenameWithoutLastExtension(srcPath);
         for (auto const& suffix : suffixes) {
           std::string const suffixedPath = basePath + suffix;
           for (auto const& ext : exts) {