Commit 71a11252 authored by Stephen Kelly's avatar Stephen Kelly
Browse files

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.
parent 261acd91
......@@ -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 =
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,
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(
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
#include "second_widget.h"
#include "ui_second_widget.h"
SecondWidget::SecondWidget(QWidget *parent)
: QWidget(parent), ui(new Ui::SecondWidget)
delete ui;
#include <QWidget>
namespace Ui
class SecondWidget;
class SecondWidget : public QWidget
explicit SecondWidget(QWidget *parent = 0);
Ui::SecondWidget* ui;
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<widget class="QWidget" name="SecondWidget">
<property name="geometry">
<property name="windowTitle">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<property name="text">
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment