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;
|
||||
|
||||
const std::string absPath = cmsys::SystemTools::GetFilenamePath(
|
||||
cmsys::SystemTools::GetRealPath(absFilename.c_str())) + '/';
|
||||
const std::string realName =
|
||||
cmsys::SystemTools::GetRealPath(absFilename.c_str());
|
||||
|
||||
matchOffset = 0;
|
||||
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
|
||||
basename = basename.substr(3);
|
||||
|
||||
includedUis[absPath] = basename;
|
||||
includedUis[realName] = basename;
|
||||
|
||||
matchOffset += uiIncludeRegExp.end();
|
||||
} while(uiIncludeRegExp.find(contentsString.c_str() + matchOffset));
|
||||
|
@ -1960,7 +1960,7 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile,
|
|||
return false;
|
||||
}
|
||||
|
||||
bool cmQtAutoGenerators::GenerateUi(const std::string& path,
|
||||
bool cmQtAutoGenerators::GenerateUi(const std::string& realName,
|
||||
const std::string& uiFileName)
|
||||
{
|
||||
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());
|
||||
}
|
||||
|
||||
const std::string path = cmsys::SystemTools::GetFilenamePath(
|
||||
realName.c_str()) + '/';
|
||||
|
||||
std::string ui_output_file = "ui_" + uiFileName + ".h";
|
||||
std::string ui_input_file = path + uiFileName + ".ui";
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ private:
|
|||
bool RunAutogen(cmMakefile* makefile);
|
||||
bool GenerateMoc(const std::string& sourceFile,
|
||||
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();
|
||||
void ParseCppFile(const std::string& absFilename,
|
||||
const std::vector<std::string>& headerExtensions,
|
||||
|
|
|
@ -64,7 +64,7 @@ add_custom_command(
|
|||
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>
|
||||
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