QtAutogen: Process all ui files in a source file (#14981).
Use a vector to store a list of matched ui_ includes, instead of overwriting the previous match.
This commit is contained in:
parent
b8877b1d62
commit
e3c97a1914
|
@ -1296,8 +1296,8 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
|
||||||
const std::vector<std::string>& headerExtensions =
|
const std::vector<std::string>& headerExtensions =
|
||||||
makefile->GetHeaderExtensions();
|
makefile->GetHeaderExtensions();
|
||||||
|
|
||||||
std::map<std::string, std::string> includedUis;
|
std::map<std::string, std::vector<std::string> > includedUis;
|
||||||
std::map<std::string, std::string> skippedUis;
|
std::map<std::string, std::vector<std::string> > skippedUis;
|
||||||
std::vector<std::string> uicSkipped;
|
std::vector<std::string> uicSkipped;
|
||||||
cmSystemTools::ExpandListArgument(this->SkipUic, uicSkipped);
|
cmSystemTools::ExpandListArgument(this->SkipUic, uicSkipped);
|
||||||
|
|
||||||
|
@ -1307,7 +1307,7 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
|
||||||
{
|
{
|
||||||
const bool skipUic = std::find(uicSkipped.begin(), uicSkipped.end(), *it)
|
const bool skipUic = std::find(uicSkipped.begin(), uicSkipped.end(), *it)
|
||||||
!= uicSkipped.end();
|
!= uicSkipped.end();
|
||||||
std::map<std::string, std::string>& uiFiles
|
std::map<std::string, std::vector<std::string> >& uiFiles
|
||||||
= skipUic ? skippedUis : includedUis;
|
= skipUic ? skippedUis : includedUis;
|
||||||
const std::string &absFilename = *it;
|
const std::string &absFilename = *it;
|
||||||
if (this->Verbose)
|
if (this->Verbose)
|
||||||
|
@ -1368,12 +1368,17 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
|
||||||
{
|
{
|
||||||
this->GenerateMoc(it->first, it->second);
|
this->GenerateMoc(it->first, it->second);
|
||||||
}
|
}
|
||||||
for(std::map<std::string, std::string>::const_iterator
|
for(std::map<std::string, std::vector<std::string> >::const_iterator
|
||||||
it = includedUis.begin();
|
it = includedUis.begin();
|
||||||
it != includedUis.end();
|
it != includedUis.end();
|
||||||
++it)
|
++it)
|
||||||
{
|
{
|
||||||
this->GenerateUi(it->first, it->second);
|
for (std::vector<std::string>::const_iterator nit = it->second.begin();
|
||||||
|
nit != it->second.end();
|
||||||
|
++nit)
|
||||||
|
{
|
||||||
|
this->GenerateUi(it->first, *nit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this->RccExecutable.empty())
|
if(!this->RccExecutable.empty())
|
||||||
|
@ -1448,9 +1453,9 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
|
||||||
|
|
||||||
|
|
||||||
void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
|
void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
|
||||||
const std::vector<std::string>& headerExtensions,
|
const std::vector<std::string>& headerExtensions,
|
||||||
std::map<std::string, std::string>& includedMocs,
|
std::map<std::string, std::string>& includedMocs,
|
||||||
std::map<std::string, std::string> &includedUis)
|
std::map<std::string, std::vector<std::string> > &includedUis)
|
||||||
{
|
{
|
||||||
cmsys::RegularExpression mocIncludeRegExp(
|
cmsys::RegularExpression mocIncludeRegExp(
|
||||||
"[\n][ \t]*#[ \t]*include[ \t]+"
|
"[\n][ \t]*#[ \t]*include[ \t]+"
|
||||||
|
@ -1636,9 +1641,9 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
|
||||||
|
|
||||||
|
|
||||||
void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
|
void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
|
||||||
const std::vector<std::string>& headerExtensions,
|
const std::vector<std::string>& headerExtensions,
|
||||||
std::map<std::string, std::string>& includedMocs,
|
std::map<std::string, std::string>& includedMocs,
|
||||||
std::map<std::string, std::string>& includedUis)
|
std::map<std::string, std::vector<std::string> >& includedUis)
|
||||||
{
|
{
|
||||||
cmsys::RegularExpression mocIncludeRegExp(
|
cmsys::RegularExpression mocIncludeRegExp(
|
||||||
"[\n][ \t]*#[ \t]*include[ \t]+"
|
"[\n][ \t]*#[ \t]*include[ \t]+"
|
||||||
|
@ -1756,7 +1761,7 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
|
||||||
|
|
||||||
|
|
||||||
void cmQtAutoGenerators::ParseForUic(const std::string& absFilename,
|
void cmQtAutoGenerators::ParseForUic(const std::string& absFilename,
|
||||||
std::map<std::string, std::string>& includedUis)
|
std::map<std::string, std::vector<std::string> >& includedUis)
|
||||||
{
|
{
|
||||||
if (this->UicExecutable.empty())
|
if (this->UicExecutable.empty())
|
||||||
{
|
{
|
||||||
|
@ -1774,8 +1779,8 @@ void cmQtAutoGenerators::ParseForUic(const std::string& absFilename,
|
||||||
|
|
||||||
|
|
||||||
void cmQtAutoGenerators::ParseForUic(const std::string& absFilename,
|
void cmQtAutoGenerators::ParseForUic(const std::string& absFilename,
|
||||||
const std::string& contentsString,
|
const std::string& contentsString,
|
||||||
std::map<std::string, std::string>& includedUis)
|
std::map<std::string, std::vector<std::string> >& includedUis)
|
||||||
{
|
{
|
||||||
if (this->UicExecutable.empty())
|
if (this->UicExecutable.empty())
|
||||||
{
|
{
|
||||||
|
@ -1805,7 +1810,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[realName] = basename;
|
includedUis[realName].push_back(basename);
|
||||||
|
|
||||||
matchOffset += uiIncludeRegExp.end();
|
matchOffset += uiIncludeRegExp.end();
|
||||||
} while(uiIncludeRegExp.find(contentsString.c_str() + matchOffset));
|
} while(uiIncludeRegExp.find(contentsString.c_str() + matchOffset));
|
||||||
|
@ -1851,9 +1856,9 @@ cmQtAutoGenerators::SearchHeadersForCppFile(const std::string& absFilename,
|
||||||
|
|
||||||
|
|
||||||
void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders,
|
void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders,
|
||||||
const std::map<std::string, std::string>& includedMocs,
|
const std::map<std::string, std::string>& includedMocs,
|
||||||
std::map<std::string, std::string>& notIncludedMocs,
|
std::map<std::string, std::string>& notIncludedMocs,
|
||||||
std::map<std::string, std::string>& includedUis)
|
std::map<std::string, std::vector<std::string> >& includedUis)
|
||||||
{
|
{
|
||||||
for(std::set<std::string>::const_iterator hIt=absHeaders.begin();
|
for(std::set<std::string>::const_iterator hIt=absHeaders.begin();
|
||||||
hIt!=absHeaders.end();
|
hIt!=absHeaders.end();
|
||||||
|
|
|
@ -51,28 +51,28 @@ private:
|
||||||
bool GenerateUi(const std::string& realName, 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,
|
||||||
std::map<std::string, std::string>& includedMocs,
|
std::map<std::string, std::string>& includedMocs,
|
||||||
std::map<std::string, std::string>& includedUis);
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
||||||
void StrictParseCppFile(const std::string& absFilename,
|
void StrictParseCppFile(const std::string& absFilename,
|
||||||
const std::vector<std::string>& headerExtensions,
|
const std::vector<std::string>& headerExtensions,
|
||||||
std::map<std::string, std::string>& includedMocs,
|
std::map<std::string, std::string>& includedMocs,
|
||||||
std::map<std::string, std::string>& includedUis);
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
||||||
void SearchHeadersForCppFile(const std::string& absFilename,
|
void SearchHeadersForCppFile(const std::string& absFilename,
|
||||||
const std::vector<std::string>& headerExtensions,
|
const std::vector<std::string>& headerExtensions,
|
||||||
std::set<std::string>& absHeaders);
|
std::set<std::string>& absHeaders);
|
||||||
|
|
||||||
void ParseHeaders(const std::set<std::string>& absHeaders,
|
void ParseHeaders(const std::set<std::string>& absHeaders,
|
||||||
const std::map<std::string, std::string>& includedMocs,
|
const std::map<std::string, std::string>& includedMocs,
|
||||||
std::map<std::string, std::string>& notIncludedMocs,
|
std::map<std::string, std::string>& notIncludedMocs,
|
||||||
std::map<std::string, std::string>& includedUis);
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
||||||
|
|
||||||
void ParseForUic(const std::string& fileName,
|
void ParseForUic(const std::string& fileName,
|
||||||
const std::string& contentsString,
|
const std::string& contentsString,
|
||||||
std::map<std::string, std::string>& includedUis);
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
||||||
|
|
||||||
void ParseForUic(const std::string& fileName,
|
void ParseForUic(const std::string& fileName,
|
||||||
std::map<std::string, std::string>& includedUis);
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ add_custom_command(
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(QtAutogen main.cpp calwidget.cpp second_widget.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
|
||||||
|
multiplewidgets.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,19 @@
|
||||||
|
|
||||||
|
#include "multiplewidgets.h"
|
||||||
|
|
||||||
|
#include "ui_widget1.h"
|
||||||
|
#include "ui_widget2.h"
|
||||||
|
|
||||||
|
Widget1::Widget1(QWidget *parent)
|
||||||
|
: QWidget(parent),
|
||||||
|
ui(new Ui::Widget1)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget2::Widget2(QWidget *parent)
|
||||||
|
: QWidget(parent),
|
||||||
|
ui(new Ui::Widget2)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
|
||||||
|
#ifndef MULTIPLEWIDGETS_H
|
||||||
|
#define MULTIPLEWIDGETS_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class Widget1;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Widget1 : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
Widget1(QWidget *parent = 0);
|
||||||
|
private:
|
||||||
|
Ui::Widget1 *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class Widget2;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Widget2 : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
Widget2(QWidget *parent = 0);
|
||||||
|
private:
|
||||||
|
Ui::Widget2 *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,45 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>Widget1</class>
|
||||||
|
<widget class="QWidget" name="Widget1">
|
||||||
|
<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>140</x>
|
||||||
|
<y>80</y>
|
||||||
|
<width>80</width>
|
||||||
|
<height>23</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>PushButton</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="pushButton_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>190</x>
|
||||||
|
<y>170</y>
|
||||||
|
<width>80</width>
|
||||||
|
<height>23</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>PushButton</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>Widget2</class>
|
||||||
|
<widget class="QWidget" name="Widget1">
|
||||||
|
<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="QListWidget" name="listWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>256</width>
|
||||||
|
<height>192</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
Loading…
Reference in New Issue