Commit 00e6b67e authored by Sebastian Holtermann's avatar Sebastian Holtermann Committed by Brad King
Browse files

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
parent a4231943
......@@ -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) {
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment