diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2022-05-24 14:41:57 (GMT) |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2022-05-25 11:04:01 (GMT) |
commit | 76608c60d38e1cb93a77a430c1cef3ec85f2ce83 (patch) | |
tree | 26ae44d0d3c5b1b47c1306b218631696445511d0 /Source/cmQtAutoGenInitializer.cxx | |
parent | ced9a3b0bbc85fbd392b7323b18d00309a444ddc (diff) | |
download | CMake-76608c60d38e1cb93a77a430c1cef3ec85f2ce83.zip CMake-76608c60d38e1cb93a77a430c1cef3ec85f2ce83.tar.gz CMake-76608c60d38e1cb93a77a430c1cef3ec85f2ce83.tar.bz2 |
AutoMoc: Take AUTOMOC_BUILD_DIR into account in depfile
For the Ninja generator and targets that have AUTOMOC_BUILD_DIR set, the
AutoMoc target was always out of date.
That was because the depfile in the AutoMoc build directory was
referencing the wrong timestamp file:
target_autogen/timestamp: ...dependencies...
instead of
automoc_build_dir/timestamp: ...dependencies...
Use the relative path of the timestamp file as rule name for the
depfile. That path is calculated with AUTOMOC_BUILD_DIR taken into
account.
Fixes: #23547
Diffstat (limited to 'Source/cmQtAutoGenInitializer.cxx')
-rw-r--r-- | Source/cmQtAutoGenInitializer.cxx | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index a47b3c0..40f3ab5 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -407,6 +407,7 @@ bool cmQtAutoGenInitializer::InitCustomTargets() } // Common directories + std::string relativeBuildDir; { // Collapsed current binary directory std::string const cbd = cmSystemTools::CollapseFullPath( @@ -424,6 +425,8 @@ bool cmQtAutoGenInitializer::InitCustomTargets() cmStrCat(cbd, '/', this->GenTarget->GetName(), "_autogen"); } cmSystemTools::ConvertToUnixSlashes(this->Dir.Build); + this->Dir.RelativeBuild = + cmSystemTools::RelativePath(cbd, this->Dir.Build); // Cleanup build directory this->AddCleanFile(this->Dir.Build); @@ -1357,7 +1360,7 @@ bool cmQtAutoGenInitializer::InitAutogenTarget() cmStrCat(this->Dir.Build, "/", timestampFileName); this->AutogenTarget.DepFile = cmStrCat(this->Dir.Build, "/deps"); this->AutogenTarget.DepFileRuleName = - cmStrCat(this->GenTarget->GetName(), "_autogen/", timestampFileName); + cmStrCat(this->Dir.RelativeBuild, "/", timestampFileName); commandLines.push_back(cmMakeCommandLine( { cmSystemTools::GetCMakeCommand(), "-E", "touch", outputFile })); |