Merge topic 'automoc-src-per-dir'

9beb2744 Automoc: Fix support of files with the same name (#12873)
This commit is contained in:
Brad King
2016-02-18 10:07:56 -05:00
committed by CMake Topic Stage
6 changed files with 59 additions and 4 deletions
+32 -3
View File
@@ -1104,10 +1104,39 @@ void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders,
std::cout << "AUTOGEN: Checking " << headerName << std::endl;
}
const std::string basename = cmsys::SystemTools::
GetFilenameWithoutLastExtension(headerName);
std::string headerDirectory;
if (cmsys::SystemTools::IsSubDirectory(headerName,
this->ProjectSourceDir))
{
headerDirectory = this->ProjectSourceDir;
}
else if (cmsys::SystemTools::IsSubDirectory(headerName,
this->ProjectBinaryDir))
{
headerDirectory = this->ProjectBinaryDir;
}
else
{
cmsys::SystemTools::SplitPathRootComponent(headerName,
&headerDirectory);
}
const std::string currentMoc = "moc_" + basename + ".cpp";
std::string baseHeaderName =
cmsys::SystemTools::GetFilenameWithoutLastExtension(headerName);
headerDirectory = cmsys::SystemTools::RelativePath(
headerDirectory, cmsys::SystemTools::GetParentDirectory(headerName));
if (!headerDirectory.empty())
{
headerDirectory += "/";
}
std::string mocName = headerDirectory + baseHeaderName;
cmSystemTools::ReplaceString(mocName, "/", "_");
const std::string currentMoc = "moc_" + mocName + ".cpp";
std::string macroName;
if (requiresMocing(contents, macroName))
{