From d3a9887149d638dd23df2b46ff67a90cd91d33fe Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Tue, 14 Feb 2017 23:59:07 +0100 Subject: Autogen: Add method for checksum based path generation --- Source/cmQtAutoGenerators.cxx | 27 ++++++++++++++++++++------- Source/cmQtAutoGenerators.h | 2 ++ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 218bbc3..0a90c7e 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -1046,10 +1046,8 @@ void cmQtAutoGenerators::ParseHeaders( } std::string macroName; if (this->MocRequired(contents, macroName)) { - notIncludedMocs[headerName] = fpathCheckSum.getPart(headerName) + - "/moc_" + - cmsys::SystemTools::GetFilenameWithoutLastExtension(headerName) + - ".cpp"; + notIncludedMocs[headerName] = + this->ChecksumedPath(headerName, "moc_", ".cpp"); } } @@ -1412,9 +1410,8 @@ bool cmQtAutoGenerators::RccGenerateAll() si != this->RccSources.end(); ++si) { const std::string ext = cmsys::SystemTools::GetFilenameLastExtension(*si); if (ext == ".qrc") { - qrcGenMap[*si] = this->AutogenBuildSubDir + fpathCheckSum.getPart(*si) + - "/qrc_" + cmsys::SystemTools::GetFilenameWithoutLastExtension(*si) + - ".cpp"; + qrcGenMap[*si] = + this->AutogenBuildSubDir + this->ChecksumedPath(*si, "qrc_", ".cpp"); } } @@ -1629,6 +1626,22 @@ bool cmQtAutoGenerators::NameCollisionTest( } /** + * @brief Generates a file path based on the checksum of the source file path + * @return The path + */ +std::string cmQtAutoGenerators::ChecksumedPath(const std::string& sourceFile, + const char* basePrefix, + const char* baseSuffix) +{ + std::string res = fpathCheckSum.getPart(sourceFile); + res += "/"; + res += basePrefix; + res += cmsys::SystemTools::GetFilenameWithoutLastExtension(sourceFile); + res += baseSuffix; + return res; +} + +/** * @brief Generates the parent directory of the given file on demand * @return True on success */ diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h index bf4a251..dcb3a4f 100644 --- a/Source/cmQtAutoGenerators.h +++ b/Source/cmQtAutoGenerators.h @@ -107,6 +107,8 @@ private: // - Utility bool NameCollisionTest(const std::map& genFiles, std::multimap& collisions); + std::string ChecksumedPath(const std::string& sourceFile, + const char* basePrefix, const char* baseSuffix); bool MakeParentDirectory(const std::string& filename); bool MocEnabled() const { return !this->MocExecutable.empty(); } -- cgit v0.12