QtAutogen: Fix use of multiple ui files in a single target.
Don't store a mapping of the directory to the ui file. The directory will be a unique key, allowing only one ui file to be specified. Use the source file name instead as the mapping key.
This commit is contained in:
parent
261acd9109
commit
71a11252e9
|
@ -1786,8 +1786,8 @@ void cmQtAutoGenerators::ParseForUic(const std::string& absFilename,
|
||||||
|
|
||||||
std::string::size_type matchOffset = 0;
|
std::string::size_type matchOffset = 0;
|
||||||
|
|
||||||
const std::string absPath = cmsys::SystemTools::GetFilenamePath(
|
const std::string realName =
|
||||||
cmsys::SystemTools::GetRealPath(absFilename.c_str())) + '/';
|
cmsys::SystemTools::GetRealPath(absFilename.c_str());
|
||||||
|
|
||||||
matchOffset = 0;
|
matchOffset = 0;
|
||||||
if ((strstr(contentsString.c_str(), "ui_") != NULL)
|
if ((strstr(contentsString.c_str(), "ui_") != NULL)
|
||||||
|
@ -1804,7 +1804,7 @@ void cmQtAutoGenerators::ParseForUic(const std::string& absFilename,
|
||||||
// finding the correct header, so we need to remove the ui_ part
|
// finding the correct header, so we need to remove the ui_ part
|
||||||
basename = basename.substr(3);
|
basename = basename.substr(3);
|
||||||
|
|
||||||
includedUis[absPath] = basename;
|
includedUis[realName] = basename;
|
||||||
|
|
||||||
matchOffset += uiIncludeRegExp.end();
|
matchOffset += uiIncludeRegExp.end();
|
||||||
} while(uiIncludeRegExp.find(contentsString.c_str() + matchOffset));
|
} while(uiIncludeRegExp.find(contentsString.c_str() + matchOffset));
|
||||||
|
@ -1960,7 +1960,7 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cmQtAutoGenerators::GenerateUi(const std::string& path,
|
bool cmQtAutoGenerators::GenerateUi(const std::string& realName,
|
||||||
const std::string& uiFileName)
|
const std::string& uiFileName)
|
||||||
{
|
{
|
||||||
if (!cmsys::SystemTools::FileExists(this->Builddir.c_str(), false))
|
if (!cmsys::SystemTools::FileExists(this->Builddir.c_str(), false))
|
||||||
|
@ -1968,6 +1968,9 @@ bool cmQtAutoGenerators::GenerateUi(const std::string& path,
|
||||||
cmsys::SystemTools::MakeDirectory(this->Builddir.c_str());
|
cmsys::SystemTools::MakeDirectory(this->Builddir.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::string path = cmsys::SystemTools::GetFilenamePath(
|
||||||
|
realName.c_str()) + '/';
|
||||||
|
|
||||||
std::string ui_output_file = "ui_" + uiFileName + ".h";
|
std::string ui_output_file = "ui_" + uiFileName + ".h";
|
||||||
std::string ui_input_file = path + uiFileName + ".ui";
|
std::string ui_input_file = path + uiFileName + ".ui";
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ private:
|
||||||
bool RunAutogen(cmMakefile* makefile);
|
bool RunAutogen(cmMakefile* makefile);
|
||||||
bool GenerateMoc(const std::string& sourceFile,
|
bool GenerateMoc(const std::string& sourceFile,
|
||||||
const std::string& mocFileName);
|
const std::string& mocFileName);
|
||||||
bool GenerateUi(const std::string& path, const std::string& uiFileName);
|
bool GenerateUi(const std::string& realName, const std::string& uiFileName);
|
||||||
bool GenerateQrc();
|
bool GenerateQrc();
|
||||||
void ParseCppFile(const std::string& absFilename,
|
void ParseCppFile(const std::string& absFilename,
|
||||||
const std::vector<std::string>& headerExtensions,
|
const std::vector<std::string>& headerExtensions,
|
||||||
|
|
|
@ -64,7 +64,7 @@ add_custom_command(
|
||||||
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/myotherinterface.h.in"
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/myotherinterface.h.in"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(QtAutogen main.cpp calwidget.cpp foo.cpp blub.cpp bar.cpp abc.cpp
|
add_executable(QtAutogen main.cpp calwidget.cpp second_widget.cpp foo.cpp blub.cpp bar.cpp abc.cpp
|
||||||
xyz.cpp yaf.cpp gadget.cpp $<TARGET_OBJECTS:privateSlot>
|
xyz.cpp yaf.cpp gadget.cpp $<TARGET_OBJECTS:privateSlot>
|
||||||
test.qrc second_resource.qrc resourcetester.cpp generated.cpp
|
test.qrc second_resource.qrc resourcetester.cpp generated.cpp
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
#include "second_widget.h"
|
||||||
|
#include "ui_second_widget.h"
|
||||||
|
|
||||||
|
SecondWidget::SecondWidget(QWidget *parent)
|
||||||
|
: QWidget(parent), ui(new Ui::SecondWidget)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
SecondWidget::~SecondWidget()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
namespace Ui
|
||||||
|
{
|
||||||
|
class SecondWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SecondWidget : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit SecondWidget(QWidget *parent = 0);
|
||||||
|
|
||||||
|
~SecondWidget();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::SecondWidget* ui;
|
||||||
|
};
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>SecondWidget</class>
|
||||||
|
<widget class="QWidget" name="SecondWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton" name="pushButton">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>80</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>94</width>
|
||||||
|
<height>24</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>PushButton</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
Loading…
Reference in New Issue