Automoc: Fix support of files with the same name (#12873)
This commit is contained in:
parent
8dfb6f8b37
commit
9beb2744d7
|
@ -1104,10 +1104,39 @@ void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders,
|
||||||
std::cout << "AUTOGEN: Checking " << headerName << std::endl;
|
std::cout << "AUTOGEN: Checking " << headerName << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string basename = cmsys::SystemTools::
|
std::string headerDirectory;
|
||||||
GetFilenameWithoutLastExtension(headerName);
|
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;
|
std::string macroName;
|
||||||
if (requiresMocing(contents, macroName))
|
if (requiresMocing(contents, macroName))
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,6 +3,6 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
|
set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
|
||||||
|
|
||||||
add_library(libA SHARED libA.cpp)
|
add_library(libA SHARED libA.cpp foo.cpp bar/foo.cpp)
|
||||||
target_link_libraries(libA LINK_PUBLIC ${QT_QTCORE_TARGET})
|
target_link_libraries(libA LINK_PUBLIC ${QT_QTCORE_TARGET})
|
||||||
generate_export_header(libA)
|
generate_export_header(libA)
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#include "foo.h"
|
||||||
|
|
||||||
|
bar::foo::foo() {}
|
||||||
|
bar::foo::~foo() {}
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
namespace bar {
|
||||||
|
class foo: public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
foo();
|
||||||
|
~foo();
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
#include "foo.h"
|
||||||
|
|
||||||
|
foo::foo() {}
|
||||||
|
foo::~foo() {}
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class foo: public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
foo();
|
||||||
|
~foo();
|
||||||
|
};
|
Loading…
Reference in New Issue