summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmQtAutoGenInitializer.cxx22
-rw-r--r--Tests/RunCMake/Autogen_6/RunCMakeTest.cmake27
-rw-r--r--Tests/RunCMake/Autogen_6/incremental_build/CMakeLists.txt (renamed from Tests/RunCMake/Autogen_6/multi_ui_files/CMakeLists.txt)14
-rw-r--r--Tests/RunCMake/Autogen_6/incremental_build/main.cpp (renamed from Tests/RunCMake/Autogen_6/multi_ui_files/src/main.cpp)4
-rw-r--r--Tests/RunCMake/Autogen_6/incremental_build/ui/widget.cpp15
-rw-r--r--Tests/RunCMake/Autogen_6/incremental_build/ui/widget.h23
-rw-r--r--Tests/RunCMake/Autogen_6/incremental_build/ui/widget.ui19
-rw-r--r--Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.cpp25
-rw-r--r--Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.h22
-rw-r--r--Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.ui33
-rw-r--r--Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.cpp22
-rw-r--r--Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.h23
-rw-r--r--Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.ui52
-rw-r--r--Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.cpp22
-rw-r--r--Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.h24
-rw-r--r--Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.ui45
16 files changed, 79 insertions, 313 deletions
diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx
index b75a574..c9dd154 100644
--- a/Source/cmQtAutoGenInitializer.cxx
+++ b/Source/cmQtAutoGenInitializer.cxx
@@ -1340,25 +1340,9 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
}
if (this->Uic.Enabled) {
- auto const useAdvancedUicGraph = [this]() -> bool {
- if (this->MultiConfig && this->GlobalGen->IsNinja()) {
- return this->UseBetterGraph;
- }
- return true;
- }();
- if (useAdvancedUicGraph) {
- // Make all ui_*.h files byproducts of the ${target}_autogen/timestamp
- // custom command if the generation of depfile is enabled.
- auto& byProducts = useDepfile ? timestampByproducts : autogenByproducts;
- for (auto const& file : this->Uic.UiHeaders) {
- this->AddGeneratedSource(file.first, this->Uic);
- byProducts.push_back(file.second);
- }
- } else {
- for (auto const& file : this->Uic.UiHeaders) {
- this->AddGeneratedSource(file.first, this->Uic);
- autogenByproducts.push_back(file.second);
- }
+ for (auto const& file : this->Uic.UiHeaders) {
+ this->AddGeneratedSource(file.first, this->Uic);
+ autogenByproducts.push_back(file.second);
}
}
diff --git a/Tests/RunCMake/Autogen_6/RunCMakeTest.cmake b/Tests/RunCMake/Autogen_6/RunCMakeTest.cmake
index 66514f9..65d58a9 100644
--- a/Tests/RunCMake/Autogen_6/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Autogen_6/RunCMakeTest.cmake
@@ -1,3 +1,4 @@
+
include(RunCMake)
include(Autogen_common/utils)
@@ -6,23 +7,22 @@ if (DEFINED with_qt_version)
-Dwith_qt_version=${with_qt_version}
"-DQt${with_qt_version}_DIR:PATH=${Qt${with_qt_version}_DIR}"
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
- "-DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON"
)
if (QtCore_VERSION VERSION_GREATER_EQUAL 5.15.0)
macro(set_test_variables_for_unwanted_builds)
if (RunCMake_GENERATOR MATCHES "Ninja")
- set(RunCMake_TEST_NOT_EXPECT_stdout "widget2.cpp.o.d|mainwindow.cpp.o.d")
+ set(RunCMake_TEST_EXPECT_stdout "ninja: no work to do.")
elseif (RunCMake_GENERATOR MATCHES "Make")
- set(RunCMake_TEST_NOT_EXPECT_stdout "Building CXX object multi_ui_files/CMakeFiles/example.dir/src/widget2.cpp.o|\
- Building CXX object multi_ui_files/CMakeFiles/example.dir/src/mainwindow.cpp.o")
+ set(RunCMake_TEST_NOT_EXPECT_stdout "Building CXX object multi_ui_files/CMakeFiles/example.dir/src/main.cpp.o|\
+ Building CXX object multi_ui_files/CMakeFiles/example.dir/src/widget.cpp.o")
elseif (RunCMake_GENERATOR MATCHES "Visual Studio")
- set(RunCMake_TEST_NOT_EXPECT_stdout "widget2.cpp|mainwindow.cpp")
+ set(RunCMake_TEST_NOT_EXPECT_stdout "widget.cpp")
elseif (RunCMake_GENERATOR MATCHES "Xcode")
- set(RunCMake_TEST_NOT_EXPECT_stdout "widget2.cpp|mainwindow.cpp")
+ set(RunCMake_TEST_NOT_EXPECT_stdout "widget.cpp")
endif()
endmacro()
- function(uic_build_test test_name binary_dir source_dir file_to_touch test_config)
+ function(uic_incremental_build_test test_name binary_dir source_dir test_config)
set(RunCMake_TEST_BINARY_DIR ${binary_dir})
set(RunCMake_TEST_SOURCE_DIR ${source_dir})
@@ -39,13 +39,14 @@ if (DEFINED with_qt_version)
endif()
run_cmake_with_options(${test_name} ${RunCMake_TEST_OPTIONS} ${config_arg})
set(RunCMake_TEST_NO_CLEAN 1)
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "${RunCMake_TEST_VARIANT_DESCRIPTION}-First build")
+ run_cmake_command("${test_name}-build" ${CMAKE_COMMAND} --build . ${test_verbose_arg} ${multiconfig_config_arg})
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "${config_desc}-Second build")
run_cmake_command("${test_name}-build" ${CMAKE_COMMAND} --build . ${test_verbose_arg} ${multiconfig_config_arg})
- file(TOUCH ${file_to_touch})
- set(RunCMake_TEST_VARIANT_DESCRIPTION "${config_desc}-first_build_after_touching")
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "${config_desc}-No files were built on the third build")
set_test_variables_for_unwanted_builds()
run_cmake_command("${test_name}-build" ${CMAKE_COMMAND} --build . ${test_verbose_arg} ${multiconfig_config_arg})
- message(STATUS "${test_name}-build${config_desc}-Only build files that were touched were built - PASSED")
endfunction()
if(RunCMake_GENERATOR MATCHES "Make|Ninja|Visual Studio|Xcode")
@@ -60,11 +61,9 @@ if (DEFINED with_qt_version)
set(config_desc "-${config}")
endif()
- uic_build_test(multi_ui_files_touch_ui ${RunCMake_BINARY_DIR}/multi_ui_files_touch_ui${config_desc}-build
- ${RunCMake_SOURCE_DIR}/multi_ui_files ${RunCMake_SOURCE_DIR}/multi_ui_files/src/widget1.ui ${config})
+ uic_incremental_build_test(incremental_build_test ${RunCMake_BINARY_DIR}/incremental_build${config_desc}-build
+ ${RunCMake_SOURCE_DIR}/incremental_build ${config})
- uic_build_test(multi_ui_files_touch_cpp ${RunCMake_BINARY_DIR}/multi_ui_files_touch_cpp${config_desc}-build
- ${RunCMake_SOURCE_DIR}/multi_ui_files ${RunCMake_SOURCE_DIR}/multi_ui_files/src/widget1.cpp ${config})
endforeach()
endif()
endif()
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/CMakeLists.txt b/Tests/RunCMake/Autogen_6/incremental_build/CMakeLists.txt
index a4f7206..1796b8f 100644
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/CMakeLists.txt
+++ b/Tests/RunCMake/Autogen_6/incremental_build/CMakeLists.txt
@@ -8,16 +8,10 @@ set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
add_executable(example
- src/mainwindow.ui
- src/widget1.ui
- src/widget2.ui
- src/mainwindow.h
- src/widget1.h
- src/widget2.h
- src/main.cpp
- src/mainwindow.cpp
- src/widget1.cpp
- src/widget2.cpp
+ main.cpp
+ ui/widget.cpp
+ ui/widget.h
+ ui/widget.ui
)
target_link_libraries(example PRIVATE Qt${with_qt_version}::Widgets
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/main.cpp b/Tests/RunCMake/Autogen_6/incremental_build/main.cpp
index 8d76ad9..c15abe4 100644
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/main.cpp
+++ b/Tests/RunCMake/Autogen_6/incremental_build/main.cpp
@@ -1,11 +1,11 @@
#include <QApplication>
-#include "mainwindow.h"
+#include "ui/widget.h"
int main(int argc, char* argv[])
{
QApplication a(argc, argv);
- MainWindow w;
+ Widget w;
w.show();
return a.exec();
}
diff --git a/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.cpp b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.cpp
new file mode 100644
index 0000000..4de4ed2
--- /dev/null
+++ b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.cpp
@@ -0,0 +1,15 @@
+#include "widget.h"
+
+#include "./ui_widget.h"
+
+Widget::Widget(QWidget* parent)
+ : QWidget(parent)
+ , ui(new Ui::Widget)
+{
+ ui->setupUi(this);
+}
+
+Widget::~Widget()
+{
+ delete ui;
+}
diff --git a/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.h b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.h
new file mode 100644
index 0000000..2243ffe
--- /dev/null
+++ b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.h
@@ -0,0 +1,23 @@
+#ifndef WIDGET_H
+#define WIDGET_H
+
+#include <QWidget>
+
+QT_BEGIN_NAMESPACE
+namespace Ui {
+class Widget;
+}
+QT_END_NAMESPACE
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ Widget(QWidget* parent = nullptr);
+ ~Widget();
+
+private:
+ Ui::Widget* ui;
+};
+#endif // WIDGET_H
diff --git a/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.ui b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.ui
new file mode 100644
index 0000000..b90248d
--- /dev/null
+++ b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.ui
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Widget</class>
+ <widget class="QWidget" name="Widget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>800</width>
+ <height>600</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Widget</string>
+ </property>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.cpp b/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.cpp
deleted file mode 100644
index eb3d366..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "mainwindow.h"
-
-#include <QVBoxLayout>
-
-#include "src/ui_mainwindow.h"
-#include "widget1.h"
-
-MainWindow::MainWindow(QWidget* parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
-{
- ui->setupUi(this);
- auto layout = new QVBoxLayout;
- layout->addWidget(new Widget1);
-
- QWidget* w = new QWidget(this);
- w->setLayout(layout);
-
- setCentralWidget(w);
-}
-
-MainWindow::~MainWindow()
-{
- delete ui;
-}
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.h b/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.h
deleted file mode 100644
index 3e64459..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-#include <QMainWindow>
-
-QT_BEGIN_NAMESPACE
-namespace Ui {
-class MainWindow;
-}
-QT_END_NAMESPACE
-
-class MainWindow : public QMainWindow
-{
- Q_OBJECT
-public:
- MainWindow(QWidget* parent = nullptr);
- ~MainWindow();
-
-private:
- Ui::MainWindow* ui;
-};
-#endif // MAINWINDOW_H
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.ui b/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.ui
deleted file mode 100644
index 828d7c1..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.ui
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>800</width>
- <height>600</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>MainWindow</string>
- </property>
- <widget class="QWidget" name="centralwidget">
- <layout class="QGridLayout" name="gridLayout"/>
- </widget>
- <widget class="QMenuBar" name="menubar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>800</width>
- <height>22</height>
- </rect>
- </property>
- </widget>
- <widget class="QStatusBar" name="statusbar"/>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.cpp b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.cpp
deleted file mode 100644
index 05657ce..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "widget1.h"
-
-#include "src/ui_widget1.h"
-
-Widget1::Widget1(QWidget* parent)
- : QWidget(parent)
- , ui(new Ui::Widget1)
-{
- ui->setupUi(this);
- connect(ui->lineEdit, SIGNAL(textChanged(const QString&)), this,
- SLOT(onTextChanged(const QString&)));
-}
-
-Widget1::~Widget1()
-{
- delete ui;
-}
-
-void Widget1::onTextChanged(const QString& text)
-{
- ui->OnTextChanged->setText(text);
-}
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.h b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.h
deleted file mode 100644
index 8c28d6d..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef WIDGET1_H
-#define WIDGET1_H
-
-#include <QWidget>
-
-namespace Ui {
-class Widget1;
-}
-
-class Widget1 : public QWidget
-{
- Q_OBJECT
-public:
- explicit Widget1(QWidget* parent = nullptr);
- ~Widget1();
-public slots:
- void onTextChanged(const QString& text);
-
-private:
- Ui::Widget1* ui;
-};
-
-#endif // WIDGET1_H
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.ui b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.ui
deleted file mode 100644
index db0c58d..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.ui
+++ /dev/null
@@ -1,52 +0,0 @@
-<?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>
- <layout class="QFormLayout" name="formLayout">
- <item row="0" column="0">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Input:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QLineEdit" name="lineEdit"/>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>OnTextChanged:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QLabel" name="OnTextChanged">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>TextLabel</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.cpp b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.cpp
deleted file mode 100644
index 7f4bbaf..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "widget2.h"
-
-#include "src/ui_widget2.h"
-
-Widget2::Widget2(QWidget* parent)
- : QWidget(parent)
- , ui(new Ui::Widget2)
-{
- ui->setupUi(this);
- connect(ui->lineEdit, SIGNAL(textChanged(const QString&)), this,
- SLOT(onTextChanged(const QString&)));
-}
-
-Widget2::~Widget2()
-{
- delete ui;
-}
-
-void Widget2::onTextChanged(const QString& text)
-{
- ui->OnTextChanged->setText(text);
-}
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.h b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.h
deleted file mode 100644
index 41d7e1f..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef WIDGET2_H
-#define WIDGET2_H
-
-#include <QWidget>
-
-namespace Ui {
-class Widget2;
-}
-
-class Widget2 : public QWidget
-{
- Q_OBJECT
-
-public:
- explicit Widget2(QWidget* parent = nullptr);
- ~Widget2();
-public slots:
- void onTextChanged(const QString& text);
-
-private:
- Ui::Widget2* ui;
-};
-
-#endif // WIDGET2_H
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.ui b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.ui
deleted file mode 100644
index facf467..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.ui
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>Widget2</class>
- <widget class="QWidget" name="Widget2">
- <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="QFormLayout" name="formLayout">
- <item row="0" column="0">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Input:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QLineEdit" name="lineEdit"/>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>OnTextChanged:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QLabel" name="OnTextChanged">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>