mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 13:20:47 -06:00
Merge topic 'autogen-first-line-fix'
b4e6911bAutogen: Tests: Extend AUTOUIC include patterns testff91a5d5Autogen: Tests: Extend AUTOMOC include patterns testa1d491caAutogen: AUTOMOC/UIC fix for moc/uic include on the first line Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1670
This commit is contained in:
@@ -221,7 +221,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk,
|
||||
const char* contentChars = meta.Content.c_str();
|
||||
cmsys::RegularExpressionMatch match;
|
||||
while (wrk.Moc().RegExpInclude.find(contentChars, match)) {
|
||||
std::string incString = match.match(1);
|
||||
std::string incString = match.match(2);
|
||||
std::string incDir(SubDirPrefix(incString));
|
||||
std::string incBase =
|
||||
cmSystemTools::GetFilenameWithoutLastExtension(incString);
|
||||
@@ -500,7 +500,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseUic(WorkerT& wrk,
|
||||
const char* contentChars = meta.Content.c_str();
|
||||
cmsys::RegularExpressionMatch match;
|
||||
while (wrk.Uic().RegExpInclude.find(contentChars, match)) {
|
||||
if (!ParseUicInclude(wrk, meta, match.match(1))) {
|
||||
if (!ParseUicInclude(wrk, meta, match.match(2))) {
|
||||
success = false;
|
||||
break;
|
||||
}
|
||||
@@ -1124,9 +1124,9 @@ cmQtAutoGeneratorMocUic::cmQtAutoGeneratorMocUic()
|
||||
{
|
||||
// Precompile regular expressions
|
||||
Moc_.RegExpInclude.compile(
|
||||
"[\n][ \t]*#[ \t]*include[ \t]+"
|
||||
"(^|\n)[ \t]*#[ \t]*include[ \t]+"
|
||||
"[\"<](([^ \">]+/)?moc_[^ \">/]+\\.cpp|[^ \">]+\\.moc)[\">]");
|
||||
Uic_.RegExpInclude.compile("[\n][ \t]*#[ \t]*include[ \t]+"
|
||||
Uic_.RegExpInclude.compile("(^|\n)[ \t]*#[ \t]*include[ \t]+"
|
||||
"[\"<](([^ \">]+/)?ui_[^ \">/]+\\.h)[\">]");
|
||||
|
||||
// Initialize libuv asynchronous iteration request
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
# Autogen tests common for Qt4 and Qt5
|
||||
ADD_AUTOGEN_TEST(MocOnly mocOnly)
|
||||
ADD_AUTOGEN_TEST(MocOptions mocOptions)
|
||||
if(QT_TEST_ALLOW_QT_MACROS)
|
||||
ADD_AUTOGEN_TEST(UicOnly uicOnly)
|
||||
endif()
|
||||
ADD_AUTOGEN_TEST(UicOnly uicOnly)
|
||||
ADD_AUTOGEN_TEST(RccOnly rccOnly)
|
||||
ADD_AUTOGEN_TEST(RccEmpty rccEmpty)
|
||||
ADD_AUTOGEN_TEST(RccOffMocLibrary)
|
||||
|
||||
@@ -2,7 +2,14 @@ cmake_minimum_required(VERSION 3.10)
|
||||
project(MocOnly)
|
||||
include("../AutogenTest.cmake")
|
||||
|
||||
# Test different Q_OBJECT position styles
|
||||
add_executable(mocOnly StyleA.cpp StyleB.cpp main.cpp)
|
||||
add_executable(mocOnly
|
||||
main.cpp
|
||||
# Test different Q_OBJECT position styles
|
||||
StyleA.cpp
|
||||
StyleB.cpp
|
||||
# Test different moc_/.moc include positions
|
||||
IncA.cpp
|
||||
IncB.cpp
|
||||
)
|
||||
set_property(TARGET mocOnly PROPERTY AUTOMOC ON)
|
||||
target_link_libraries(mocOnly ${QT_LIBRARIES})
|
||||
|
||||
19
Tests/QtAutogen/MocOnly/IncA.cpp
Normal file
19
Tests/QtAutogen/MocOnly/IncA.cpp
Normal file
@@ -0,0 +1,19 @@
|
||||
#include "moc_IncA.cpp"
|
||||
/// AUTOMOC moc_ include on the first line of the file!
|
||||
#include "IncA.hpp"
|
||||
|
||||
/// @brief Source local QObject
|
||||
///
|
||||
class IncAPrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
IncAPrivate(){};
|
||||
};
|
||||
|
||||
IncA::IncA()
|
||||
{
|
||||
IncAPrivate priv;
|
||||
}
|
||||
|
||||
#include "IncA.moc"
|
||||
15
Tests/QtAutogen/MocOnly/IncA.hpp
Normal file
15
Tests/QtAutogen/MocOnly/IncA.hpp
Normal file
@@ -0,0 +1,15 @@
|
||||
#ifndef INCA_HPP
|
||||
#define INCA_HPP
|
||||
|
||||
#include <QObject>
|
||||
|
||||
/// @brief Test moc include pattern in the source file
|
||||
///
|
||||
class IncA : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
IncA();
|
||||
};
|
||||
|
||||
#endif
|
||||
19
Tests/QtAutogen/MocOnly/IncB.cpp
Normal file
19
Tests/QtAutogen/MocOnly/IncB.cpp
Normal file
@@ -0,0 +1,19 @@
|
||||
#include "IncB.hpp"
|
||||
|
||||
/// @brief Source local QObject
|
||||
///
|
||||
class IncBPrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
IncBPrivate(){};
|
||||
};
|
||||
|
||||
IncB::IncB()
|
||||
{
|
||||
IncBPrivate priv;
|
||||
}
|
||||
|
||||
/// AUTOMOC moc_ include on the last line of the file!
|
||||
#include "IncB.moc"
|
||||
#include "moc_IncB.cpp"
|
||||
15
Tests/QtAutogen/MocOnly/IncB.hpp
Normal file
15
Tests/QtAutogen/MocOnly/IncB.hpp
Normal file
@@ -0,0 +1,15 @@
|
||||
#ifndef INCB_HPP
|
||||
#define INCB_HPP
|
||||
|
||||
#include <QObject>
|
||||
|
||||
/// @brief Test moc include pattern in the source file
|
||||
///
|
||||
class IncB : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
IncB();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,3 +1,5 @@
|
||||
#include "IncA.hpp"
|
||||
#include "IncB.hpp"
|
||||
#include "StyleA.hpp"
|
||||
#include "StyleB.hpp"
|
||||
|
||||
@@ -5,5 +7,8 @@ int main(int argv, char** args)
|
||||
{
|
||||
StyleA styleA;
|
||||
StyleB styleB;
|
||||
IncA incA;
|
||||
IncB incB;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -3,8 +3,6 @@ project(UicOnly)
|
||||
include("../AutogenTest.cmake")
|
||||
|
||||
# Test AUTOUIC being enabled only
|
||||
# The moc is provided by the Qt macro
|
||||
qtx_wrap_cpp(uicOnlyMoc uiconly.h)
|
||||
add_executable(uicOnly uiconly.cpp ${uicOnlyMoc})
|
||||
add_executable(uicOnly main.cpp UicOnly.cpp)
|
||||
set_property(TARGET uicOnly PROPERTY AUTOUIC ON)
|
||||
target_link_libraries(uicOnly ${QT_LIBRARIES})
|
||||
|
||||
18
Tests/QtAutogen/UicOnly/UicOnly.cpp
Normal file
18
Tests/QtAutogen/UicOnly/UicOnly.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
#include "ui_uiC.h"
|
||||
#include "ui_uiD.h"
|
||||
// AUTOUIC includes on the first two lines of a source file
|
||||
#include "UicOnly.hpp"
|
||||
|
||||
UicOnly::UicOnly()
|
||||
: uiA(new Ui::UiA)
|
||||
, uiB(new Ui::UiB)
|
||||
{
|
||||
Ui::UiC uiC;
|
||||
Ui::UiD uiD;
|
||||
}
|
||||
|
||||
UicOnly::~UicOnly()
|
||||
{
|
||||
delete uiB;
|
||||
delete uiA;
|
||||
}
|
||||
15
Tests/QtAutogen/UicOnly/UicOnly.hpp
Normal file
15
Tests/QtAutogen/UicOnly/UicOnly.hpp
Normal file
@@ -0,0 +1,15 @@
|
||||
#include "ui_uiA.h"
|
||||
#include "ui_uiB.h"
|
||||
// AUTOUIC includes on the first two lines of a header file
|
||||
#include <QObject>
|
||||
|
||||
class UicOnly : public QObject
|
||||
{
|
||||
public:
|
||||
UicOnly();
|
||||
~UicOnly();
|
||||
|
||||
private:
|
||||
Ui::UiA* uiA;
|
||||
Ui::UiB* uiB;
|
||||
};
|
||||
7
Tests/QtAutogen/UicOnly/main.cpp
Normal file
7
Tests/QtAutogen/UicOnly/main.cpp
Normal file
@@ -0,0 +1,7 @@
|
||||
#include "UicOnly.hpp"
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
UicOnly uicOnly;
|
||||
return 0;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>UicOnly</class>
|
||||
<widget class="QWidget" name="UicOnly">
|
||||
<class>UiA</class>
|
||||
<widget class="QWidget" name="UiA">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
24
Tests/QtAutogen/UicOnly/uiB.ui
Normal file
24
Tests/QtAutogen/UicOnly/uiB.ui
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>UiB</class>
|
||||
<widget class="QWidget" name="UiB">
|
||||
<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>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QTreeView" name="treeView"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
24
Tests/QtAutogen/UicOnly/uiC.ui
Normal file
24
Tests/QtAutogen/UicOnly/uiC.ui
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>UiC</class>
|
||||
<widget class="QWidget" name="UiC">
|
||||
<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>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QTreeView" name="treeView"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
24
Tests/QtAutogen/UicOnly/uiD.ui
Normal file
24
Tests/QtAutogen/UicOnly/uiD.ui
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>UiD</class>
|
||||
<widget class="QWidget" name="UiD">
|
||||
<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>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QTreeView" name="treeView"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -1,18 +0,0 @@
|
||||
|
||||
#include "uiconly.h"
|
||||
|
||||
UicOnly::UicOnly(QWidget* parent)
|
||||
: QWidget(parent)
|
||||
, ui(new Ui::UicOnly)
|
||||
{
|
||||
}
|
||||
|
||||
UicOnly::~UicOnly()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
|
||||
#ifndef UIC_ONLY_H
|
||||
#define UIC_ONLY_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include "ui_uiconly.h"
|
||||
|
||||
class UicOnly : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit UicOnly(QWidget* parent = 0);
|
||||
~UicOnly();
|
||||
|
||||
private:
|
||||
Ui::UicOnly* ui;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user