Made available compilation on windows with msys2

The aim of this commit is to easily build qelectrotech under windows
with qt6/cmake and the package tool MSYS2.

-Update some cmake file.
-Remove Git submodule for pugixml and single application
-Use cmake find_package for pugi xml
-Use cmake fetchContent for single application.
-Use cmake find_package for KCoreAddons and KWidgetsAddons.
-Minor change for pugi xml
-Minor change on ProjectPrintWindow class to compatible with Qt6 API.
This commit is contained in:
joshua
2026-03-02 22:34:16 +01:00
parent 5f318e09c8
commit fedc1cb092
11 changed files with 67 additions and 86 deletions

View File

@@ -45,11 +45,12 @@ endif()
include(cmake/paths_compilation_installation.cmake) include(cmake/paths_compilation_installation.cmake)
include(cmake/start_options.cmake) include(cmake/start_options.cmake)
include(cmake/developer_options.cmake) include(cmake/developer_options.cmake)
include(cmake/git_update_submodules.cmake) #include(cmake/git_update_submodules.cmake)
include(cmake/git_last_commit_sha.cmake) include(cmake/git_last_commit_sha.cmake)
include(cmake/fetch_kdeaddons.cmake) include(cmake/fetch_kdeaddons.cmake)
include(cmake/fetch_singleapplication.cmake) include(cmake/fetch_singleapplication.cmake)
include(cmake/fetch_pugixml.cmake) include(cmake/fetch_pugixml.cmake)
include(cmake/fetch_elements.cmake)
set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -57,11 +58,8 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC_SEARCH_PATHS ${QET_DIR}/sources/ui) set(CMAKE_AUTOUIC_SEARCH_PATHS ${QET_DIR}/sources/ui)
# als laatse
include(cmake/define_definitions.cmake) include(cmake/define_definitions.cmake)
find_package(KF6WidgetsAddons REQUIRED)
qt_add_executable( qt_add_executable(
${PROJECT_NAME} ${PROJECT_NAME}
${QET_RES_FILES} ${QET_RES_FILES}
@@ -89,7 +87,6 @@ target_link_libraries(
SQLite::SQLite3 SQLite::SQLite3
${KF6_PRIVATE_LIBRARIES} ${KF6_PRIVATE_LIBRARIES}
${QET_PRIVATE_LIBRARIES} ${QET_PRIVATE_LIBRARIES}
KF6::WidgetsAddons
) )
target_include_directories( target_include_directories(
@@ -121,7 +118,6 @@ target_include_directories(
${QET_DIR}/sources/NameList ${QET_DIR}/sources/NameList
${QET_DIR}/sources/NameList/ui ${QET_DIR}/sources/NameList/ui
${QET_DIR}/sources/utils ${QET_DIR}/sources/utils
${QET_DIR}/pugixml/src
${QET_DIR}/sources/dataBase ${QET_DIR}/sources/dataBase
${QET_DIR}/sources/dataBase/ui ${QET_DIR}/sources/dataBase/ui
${QET_DIR}/sources/factory/ui ${QET_DIR}/sources/factory/ui

View File

@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team # Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
@@ -14,25 +14,22 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with QElectroTech. If not, see <http://www.gnu.org/licenses/>. # along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
message(STATUS "fetch_kdeaddons") option(BUILD_KF6 "Build KF6 libraries, use system ones otherwise" OFF)
if(BUILD_KF6)
if(BUILD_WITH_KF6)
option(BUILD_KF6 "Build KF6 libraries, use system ones otherwise" OFF)
block(PROPAGATE KF6_GIT_TAG) block(PROPAGATE KF6_GIT_TAG)
set(BUILD_TESTING OFF) message(STATUS " - fetch_kdeaddons")
set(KDE_SKIP_TEST_SETTINGS ON) set(KDE_SKIP_TEST_SETTINGS ON)
set(BUILD_DESIGNERPLUGIN OFF) set(KCOREADDONS_USE_QML OFF)
set(KCOREADDONS_USE_QML OFF) set(KWIDGETSADDONS_USE_QML OFF)
set(BUILD_QCH OFF) set(BUILD_TESTING OFF)
set(BUILD_SHARED_LIBS OFF) set(BUILD_DESIGNERPLUGIN OFF)
find_package(ECM 6.8.0 REQUIRED NO_MODULE) set(BUILD_QCH OFF)
list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) set(BUILD_SHARED_LIBS OFF)
if(BUILD_KF6)
Include(FetchContent) Include(FetchContent)
if(NOT DEFINED KF6_GIT_TAG) if(NOT DEFINED KF6_GIT_TAG)
set(KF6_GIT_TAG v6.8.0) set(KF6_GIT_TAG v6.22.0)
endif() endif()
FetchContent_Declare( FetchContent_Declare(
@@ -40,21 +37,19 @@ if(BUILD_WITH_KF6)
GIT_REPOSITORY https://invent.kde.org/frameworks/kcoreaddons.git GIT_REPOSITORY https://invent.kde.org/frameworks/kcoreaddons.git
GIT_TAG ${KF6_GIT_TAG}) GIT_TAG ${KF6_GIT_TAG})
FetchContent_MakeAvailable(kcoreaddons) FetchContent_MakeAvailable(kcoreaddons)
get_target_property(kca_version KF6::CoreAddons VERSION)
else() FetchContent_Declare(
find_package(KF6CoreAddons REQUIRED) kwidgetsaddons
set(kca_version ${KF6CoreAddons_VERSION}) GIT_REPOSITORY https://invent.kde.org/frameworks/kwidgetsaddons.git
endif() GIT_TAG ${KF6_GIT_TAG})
FetchContent_MakeAvailable(kwidgetsaddons)
get_target_property(kwa_type KF6::CoreAddons TYPE)
message(NOTICE "ecm version : " ${ECM_VERSION})
message(NOTICE "kcoreaddons library : " ${kca_type})
message(NOTICE "kcoreaddons version : " ${kca_version})
endblock() endblock()
else()
set(KF6_PRIVATE_LIBRARIES find_package(KF6CoreAddons REQUIRED)
KF6::CoreAddons find_package(KF6WidgetsAddons REQUIRED)
)
endif() endif()
set(KF6_PRIVATE_LIBRARIES
KF6::CoreAddons
KF6::WidgetsAddons
)

View File

@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team # Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
@@ -14,14 +14,10 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with QElectroTech. If not, see <http://www.gnu.org/licenses/>. # along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
message(" - fetch_pugixml") option(BUILD_PUGIXML "Build pugixml library, use system one otherwise" OFF)
Include(FetchContent)
option(BUILD_PUGIXML "Build pugixml library, use system one otherwise" YES)
if(BUILD_PUGIXML) if(BUILD_PUGIXML)
Include(FetchContent)
message(" - fetch pugixml")
FetchContent_Declare( FetchContent_Declare(
pugixml pugixml
GIT_REPOSITORY https://github.com/zeux/pugixml.git GIT_REPOSITORY https://github.com/zeux/pugixml.git

View File

@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team # Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
@@ -16,9 +16,6 @@
message(" - fetch_singleapplication") message(" - fetch_singleapplication")
# https://github.com/itay-grudev/SingleApplication/issues/18
#qmake
#DEFINES += QAPPLICATION_CLASS=QGuiApplication
set(QAPPLICATION_CLASS QApplication) set(QAPPLICATION_CLASS QApplication)
Include(FetchContent) Include(FetchContent)
@@ -26,6 +23,6 @@ Include(FetchContent)
FetchContent_Declare( FetchContent_Declare(
SingleApplication SingleApplication
GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git
GIT_TAG v3.2.0) GIT_TAG v3.5.4)
FetchContent_MakeAvailable(SingleApplication) FetchContent_MakeAvailable(SingleApplication)

View File

@@ -421,10 +421,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.cpp ${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.cpp
${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.h ${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.h
${QET_DIR}/pugixml/src/pugiconfig.hpp
${QET_DIR}/pugixml/src/pugixml.cpp
${QET_DIR}/pugixml/src/pugixml.hpp
${QET_DIR}/sources/qetgraphicsitem/conductor.cpp ${QET_DIR}/sources/qetgraphicsitem/conductor.cpp
${QET_DIR}/sources/qetgraphicsitem/conductor.h ${QET_DIR}/sources/qetgraphicsitem/conductor.h
${QET_DIR}/sources/qetgraphicsitem/conductortextitem.cpp ${QET_DIR}/sources/qetgraphicsitem/conductortextitem.cpp

Submodule pugixml deleted from 5a1892b321

View File

@@ -20,7 +20,7 @@
#include "../NameList/nameslist.h" #include "../NameList/nameslist.h"
#include "../diagramcontext.h" #include "../diagramcontext.h"
#include "pugixml/src/pugixml.hpp" #include "pugixml.hpp"
#include <QIcon> #include <QIcon>
#include <QString> #include <QString>

View File

@@ -17,7 +17,7 @@
*/ */
#ifndef NAMES_LIST_H #ifndef NAMES_LIST_H
#define NAMES_LIST_H #define NAMES_LIST_H
#include "pugixml/src/pugixml.hpp" #include "pugixml.hpp"
#include <QtXml> #include <QtXml>
/** /**

View File

@@ -17,7 +17,7 @@
*/ */
#ifndef DIAGRAM_CONTEXT_H #ifndef DIAGRAM_CONTEXT_H
#define DIAGRAM_CONTEXT_H #define DIAGRAM_CONTEXT_H
#include "pugixml/src/pugixml.hpp" #include "pugixml.hpp"
#include <QDomElement> #include <QDomElement>
#include <QHash> #include <QHash>

View File

@@ -190,25 +190,28 @@ ProjectPrintWindow::~ProjectPrintWindow()
*/ */
void ProjectPrintWindow::requestPaint() void ProjectPrintWindow::requestPaint()
{ {
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#ifdef QT_DEBUG auto screen = this->screen();
qDebug() << "--"; if(screen)
qDebug() << "DiagramPrintDialog::print printer_->resolution() before " << m_printer->resolution(); {
qDebug() << "DiagramPrintDialog::print screennumber " << QApplication::desktop()->screenNumber(); #ifdef QT_DEBUG
#endif qDebug() << "--";
qDebug() << "DiagramPrintDialog::print printer_->resolution() before " << m_printer->resolution();
qDebug() << "DiagramPrintDialog::print screennumber " << screen->name();
#endif
QScreen *srn = QApplication::screens().at(QApplication::desktop()->screenNumber()); qreal dotsPerInch = (qreal)screen->logicalDotsPerInch();
qreal dotsPerInch = (qreal)srn->logicalDotsPerInch(); m_printer->setResolution(dotsPerInch);
m_printer->setResolution(dotsPerInch);
#ifdef QT_DEBUG #ifdef QT_DEBUG
qDebug() << "DiagramPrintDialog::print dotsPerInch " << dotsPerInch; qDebug() << "DiagramPrintDialog::print dotsPerInch " << dotsPerInch;
qDebug() << "DiagramPrintDialog::print printer_->resolution() after" << m_printer->resolution(); qDebug() << "DiagramPrintDialog::print printer_->resolution() after" << m_printer->resolution();
qDebug() << "--"; qDebug() << "--";
#endif #endif
#endif }
#endif #endif
#endif
if (!m_project->diagrams().count()) { if (!m_project->diagrams().count()) {
return; return;
@@ -265,9 +268,9 @@ void ProjectPrintWindow::printDiagram(Diagram *diagram, bool fit_page, QPainter
#if TODO_LIST #if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later") #pragma message("@TODO remove code for QT 6 or later")
#endif #endif
qDebug()<<"Help code for QT 6 or later"; qDebug()<<"Help code for QT 6 or later";
auto printed_rect = full_page ? printer->paperRect(QPrinter::Millimeter) : auto printed_rect = full_page ? printer->paperRect(QPrinter::Millimeter) :
printer->pageRect(QPrinter::Millimeter); printer->pageRect(QPrinter::Millimeter);
#endif #endif
auto used_width = printed_rect.width(); auto used_width = printed_rect.width();
auto used_height = printed_rect.height(); auto used_height = printed_rect.height();
@@ -341,7 +344,7 @@ QRect ProjectPrintWindow::diagramRect(Diagram *diagram, const ExportProperties &
diagram_rect.setHeight(diagram_rect.height() - titleblock_height); diagram_rect.setHeight(diagram_rect.height() - titleblock_height);
} }
//Adjust the border of diagram to 1px (width of the line) //Adjust the border of diagram to 1px (width of the line)
diagram_rect.adjust(0,0,1,1); diagram_rect.adjust(0,0,1,1);
return (diagram_rect.toAlignedRect()); return (diagram_rect.toAlignedRect());
@@ -356,7 +359,7 @@ QRect ProjectPrintWindow::diagramRect(Diagram *diagram, const ExportProperties &
* with the orientation and the paper format used by the actual printer * with the orientation and the paper format used by the actual printer
*/ */
int ProjectPrintWindow::horizontalPagesCount( int ProjectPrintWindow::horizontalPagesCount(
Diagram *diagram, const ExportProperties &option, bool full_page) const Diagram *diagram, const ExportProperties &option, bool full_page) const
{ {
QRect printable_area; QRect printable_area;
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove #if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
@@ -385,7 +388,7 @@ int ProjectPrintWindow::horizontalPagesCount(
* with the orientation and paper format used by the actual printer * with the orientation and paper format used by the actual printer
*/ */
int ProjectPrintWindow::verticalPagesCount( int ProjectPrintWindow::verticalPagesCount(
Diagram *diagram, const ExportProperties &option, bool full_page) const Diagram *diagram, const ExportProperties &option, bool full_page) const
{ {
QRect printable_area; QRect printable_area;
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove #if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
@@ -511,7 +514,7 @@ void ProjectPrintWindow::loadPageSetupForCurrentPrinter()
QString value = settings.value("orientation", "landscape").toString(); QString value = settings.value("orientation", "landscape").toString();
m_printer->setPageOrientation( m_printer->setPageOrientation(
value == "landscape" ? QPageLayout::Landscape : value == "landscape" ? QPageLayout::Landscape :
QPageLayout::Portrait); QPageLayout::Portrait);
} }
if (settings.contains("papersize")) if (settings.contains("papersize"))
{ {
@@ -780,9 +783,9 @@ void ProjectPrintWindow::print()
void ProjectPrintWindow::on_m_date_cb_userDateChanged(const QDate &date) void ProjectPrintWindow::on_m_date_cb_userDateChanged(const QDate &date)
{ {
auto index = ui->m_date_from_cb->currentIndex(); auto index = ui->m_date_from_cb->currentIndex();
// 0 = all date // 0 = all date
// 1 = from the date // 1 = from the date
// 2 = at the date // 2 = at the date
if (index) { on_m_uncheck_all_clicked(); } if (index) { on_m_uncheck_all_clicked(); }
else { on_m_check_all_pb_clicked(); } else { on_m_check_all_pb_clicked(); }
@@ -792,7 +795,7 @@ void ProjectPrintWindow::on_m_date_cb_userDateChanged(const QDate &date)
{ {
auto diagram_date = diagram->border_and_titleblock.date(); auto diagram_date = diagram->border_and_titleblock.date();
if ( (index == 1 && diagram_date >= date) || if ( (index == 1 && diagram_date >= date) ||
(index == 2 && diagram_date == date) ) (index == 2 && diagram_date == date) )
m_diagram_list_hash.value(diagram)->setChecked(true); m_diagram_list_hash.value(diagram)->setChecked(true);
} }