Topic: Linux compile with Qt online versions

Get Qt 5 and install the version you want  in your $HOME Qt directory:

wget http://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run

Edit qtchooser/qt5.conf
cat /usr/lib/x86_64-linux-gnu/qtchooser/qt5.conf

/home/laurent/Qt/5.13.2/gcc_64/bin
/home/laurent//Qt/5.13.2/gcc_64/lib

cat .bashrc

PATH=.:~/Qt/5.13.2/gcc_64/bin:$PATH
export PATH=~/kde/src/kdesrc-build:$PATH

Apply change

source ~/.bashrc 

$ qtchooser -print-env
QT_SELECT="default"
QTTOOLDIR="/home/laurent/Qt/5.13.2/gcc_64/bin"
QTLIBDIR="/home/laurent/Qt/5.13.2/gcc_64/lib"
$ qmake --version
QMake version 3.1
Using Qt version 5.13.2 in /home/laurent/Qt/5.13.2/gcc_64/lib

https://community.kde.org/Get_Involved/ … esrc-build
https://jbbgameich.github.io/misc/2019/ … om-qt.html


mkdir -p ~/kde/src
cd ~/kde/src/
git clone https://invent.kde.org/sdk/kdesrc-build.git  && cd kdesrc-build

Edit ~/.kdesrc-buildrc, and replace the path to Qt qtdir with the path you installed Qt to. The line should then look similar to this:
cat .kdesrc-buildrc

# This is a sample kdesrc-build configuration file appropriate for KDE
# Frameworks 5-based build environments.
#
# See the kdesrc-buildrc-sample for explanations of what the options do, or
# view the manpage or kdesrc-build documentation at
# https://docs.kde.org/trunk5/en/extragea … index.html
global
    branch-group kf5-qt5
    kdedir ~/kde # Where to install KF5-based software
    # Uncomment this and edit value to choose a different Qt5
    qtdir ~/Qt/5.13.2/gcc_64   # Where to find Qt5

    # Where to download source code. By default the build directory and
    # logs will be kept under this directory as well.
    source-dir ~/kde
end global

# Instead of specifying modules here, the current best practice is to refer to
# KF5 module lists maintained with kdesrc-build by the KF5 developers. As new
# modules are added or modified, the kdesrc-build KF5 module list is altered to
# suit, and when you update kdesrc-build you will automatically pick up the
# needed changes.

# NOTE: You MUST change the path below to include the actual path to your
# kdesrc-build installation.
include ~/kde/src/kdesrc-build/kf5-qt5-build-include

# If you wish to maintain the module list yourself that is possible, simply
# look at the files pointed to above and use the "module-set" declarations that
# they use, with your own changes.

# It is possible to change the options for modules loaded from the file
# included above (since it's not possible to add a module that's already been
# included), e.g.
options kcoreaddons
    make-options -j16
end options

Compiling KDE frameworks :

kdesrc-build kwidgetsaddons karchive kcoreaddons --include-dependencies
cp ~/kde/mkspecs/*.pri ~/Qt/5.13.2/gcc_64/mkspecs/modules/

Get QET source files and compile it:

git clone git://git.tuxfamily.org/gitroot/qet/qet.git qet_git
cd qet_git
mkdir build/ && cd build
qmake ../qelectrotech.pro
make -j$(nproc)

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

2 (edited by De-Backer 2020-12-07 21:25:35)

Re: Linux compile with Qt online versions

For suse TW
Compiling KDE frameworks :

mkdir -p ~/kde/src
cd ~/kde/src/
git clone https://invent.kde.org/sdk/kdesrc-build.git && cd kdesrc-build
./kdesrc-build --initial-setup
./kdesrc-build kwidgetsaddons karchive kcoreaddons --include-dependencies --ignore-modules Qt5

setup Qt5.51.1

cp ~/kde/usr/mkspecs/modules/*.pri ~/Qt/5.15.1/gcc_64/mkspecs/modules/
cp -r ~/kde/usr/include/* ~/Qt/5.15.1/gcc_64/include/
cp -r ~/kde/usr/lib64 ~/Qt/5.15.1/gcc_64/
cp -r ~/kde/usr/bin ~/Qt/5.15.1/gcc_64/

or for Qt6

cp ~/kde/usr/mkspecs/modules/*.pri ~/Qt/6.0.0/gcc_64/mkspecs/modules/
cp -r ~/kde/usr/include/* ~/Qt/6.0.0/gcc_64/include/
cp -r ~/kde/usr/lib64 ~/Qt/6.0.0/gcc_64/
cp -r ~/kde/usr/bin ~/Qt/6.0.0/gcc_64/

Re: Linux compile with Qt online versions

@Simon :

De-Backer wrote:

or for Qt6

cp ~/kde/usr/mkspecs/modules/*.pri ~/Qt/6.0.0/gcc_64/mkspecs/modules/
cp -r ~/kde/usr/include/* ~/Qt/6.0.0/gcc_64/include/
cp -r ~/kde/usr/lib64 ~/Qt/6.0.0/gcc_64/
cp -r ~/kde/usr/bin ~/Qt/6.0.0/gcc_64/

Install Qt6.2 before with MaintenanceTool

Edit ~/.bashrc :

PATH=.:~/Qt/6.2.2/gcc_64/bin:$PATH
export PATH=~/kde/src/kdesrc-build:$PATH

Apply change

source ~/.bashrc

Edit qt5.conf

sudo nano /usr/lib/x86_64-linux-gnu/qtchooser/qt5.conf

Verify:

qtchooser -print-env
QT_SELECT="default"
QTTOOLDIR="/home/laurent/Qt/6.2.2/gcc_64/bin"
QTLIBDIR="/home/laurent/Qt/6.2.2/gcc_64/lib"

qmake --version
QMake version 3.1
Using Qt version 6.2.2 in /home/laurent/Qt/6.2.2/gcc_64/lib

Update Cmake :
https://github.com/Kitware/CMake/

laurent@debian:~/Téléchargements/CMake-master$ 
./bootstrap && make && sudo make install

Update ~/.kdesrc-buildrc


laurent@debian:~$ cat ~/.kdesrc-buildrc 

# This is a sample kdesrc-build configuration file appropriate for KDE
# Frameworks 5-based build environments.
#
# See the kdesrc-buildrc-sample for explanations of what the options do, or
# view the manpage or kdesrc-build documentation at
# https://docs.kde.org/trunk5/en/extragea … index.html
global
    branch-group kf5-qt5
    kdedir ~/kde # Where to install KF5-based software
    # Uncomment this and edit value to choose a different Qt5
    qtdir ~/Qt/6.2.2/gcc_64   # Where to find Qt5

    # Where to download source code. By default the build directory and
    # logs will be kept under this directory as well.
    source-dir ~/kde
end global

# Instead of specifying modules here, the current best practice is to refer to
# KF5 module lists maintained with kdesrc-build by the KF5 developers. As new
# modules are added or modified, the kdesrc-build KF5 module list is altered to
# suit, and when you update kdesrc-build you will automatically pick up the
# needed changes.

# NOTE: You MUST change the path below to include the actual path to your
# kdesrc-build installation.
#include ~/kde/src/kdesrc-build/kf6-qt6-build-include
include ~/kde/src/kdesrc-build/kf6-frameworks-build-include
# If you wish to maintain the module list yourself that is possible, simply
# look at the files pointed to above and use the "module-set" declarations that
# they use, with your own changes.

# It is possible to change the options for modules loaded from the file
# included above (since it's not possible to add a module that's already been
# included), e.g.
options kcoreaddons
    make-options -j16
end options

--initial-setup and build with kdesrc-build kwidgetsaddons karchive kcoreaddons

laurent@debian:~$ ./kdesrc-build --initial-setup
laurent@debian:~$ ./kdesrc-build kwidgetsaddons karchive kcoreaddons --include-dependencies


Updating sysadmin-repo-metadata (to branch master)
git gave error exit code 129

Building extra-cmake-modules from frameworks (1/4)
        No source update, but the last configure failed
        Updating extra-cmake-modules (to branch master)
        git gave error exit code 129
        Source update complete for extra-cmake-modules: no files affected
        Preparing build system for extra-cmake-modules.
        Removing files in build directory for extra-cmake-modules
        Old build system cleaned, starting new build system.
        Running cmake targeting Unix Makefiles...
        Compiling... succeeded (after 0 seconds)
        Installing.. succeeded (after 0 seconds)

Building karchive from frameworks (2/4)
        No source update, but the last configure failed
        Updating karchive (to branch master)
        git gave error exit code 129
        Source update complete for karchive: no files affected
        Preparing build system for karchive.
        Removing files in build directory for karchive
        Old build system cleaned, starting new build system.
        Running cmake targeting Unix Makefiles...
        Compiling... succeeded (after 30 seconds)
        Note: - 1 - compile warnings
        Installing.. succeeded (after 0 seconds)

Building kcoreaddons from frameworks (3/4)
        No source update, but the last configure failed
        Updating kcoreaddons (to branch master)
        git gave error exit code 129
        Source update complete for kcoreaddons: no files affected
        Preparing build system for kcoreaddons.
        Removing files in build directory for kcoreaddons
        Old build system cleaned, starting new build system.
        Running cmake targeting Unix Makefiles...
        Compiling... succeeded (after 12 seconds)
        Note: --- 21 --- compile warnings
        Installing.. succeeded (after 0 seconds)

Building kwidgetsaddons from frameworks (4/4)
        No source update, but the last configure failed
        Updating kwidgetsaddons (to branch master)
        git gave error exit code 129
        Source update complete for kwidgetsaddons: no files affected
        Preparing build system for kwidgetsaddons.
        Removing files in build directory for kwidgetsaddons
        Old build system cleaned, starting new build system.
        Running cmake targeting Unix Makefiles...
        Compiling... succeeded (after 3 minutes, and 48 seconds)
        Note: ---- 86 ---- compile warnings
        Installing.. succeeded (after 0 seconds)

<<<  PACKAGES SUCCESSFULLY BUILT  >>>
extra-cmake-modules
karchive
kcoreaddons
kwidgetsaddons
 
        * Installing "sample-kde-env-master.sh" would overwrite an existing file:
        *  /home/laurent/.config/kde-env-master.sh
        * If this is acceptable, please delete the existing file and re-run,
        * or pass --delete-my-settings and re-run.

:-)
Your logs are saved in file:///home/laurent/kde/log/2022-01-15-02

Setup Qt6.2.2:

cp ~/kde/mkspecs/modules/*.pri ~/Qt/6.2.2/gcc_64/mkspecs/modules/
cp -r ~/kde/include/KF6 ~/Qt/6.2.2/gcc_64/include/
cp -r ~/kde/lib/x86_64-linux-gnu ~/Qt/6.2.2/gcc_64/
cp -r ~/kde/bin ~/Qt/6.2.2/gcc_64/

Go to QET source directory

mkdir build && cd build
#/usr/local/bin/cmake .. -G Ninja  ## not working yet
qmake ../qelectrotech.pro
make -j24

Compile error ..with Qt6.2.2 and KF6

../sources/ElementsCollection/elementslocation.cpp: In member function ‘bool ElementsLocation::setXml(const QDomDocument&) const:
../sources/ElementsCollection/elementslocation.cpp:783:11: error:class QRegularExpression’ has no member named ‘exactMatch’; did you mean ‘NoMatch’?
    if (rx.exactMatch(path_))
           ^~~~~~~~~~
           NoMatch
../sources/ElementsCollection/elementslocation.cpp:788:10: error:class QRegularExpression’ has no member named ‘cap’; did you mean ‘swap’?
       rx.cap(1),
          ^~~
          swap
../sources/ElementsCollection/elementslocation.cpp:789:10: error:class QRegularExpression’ has no member named ‘cap’; did you mean ‘swap’?
       rx.cap(2),
          ^~~
          swap
g++ -c -pipe -std=c++17 -O2 -std=gnu++1z -Wall -Wextra -D_REENTRANT -fPIC -DQET_ALLOW_OVERRIDE_CED_OPTION -DQET_ALLOW_OVERRIDE_CTBTD_OPTION -DQET_ALLOW_OVERRIDE_CD_OPTION -DQAPPLICATION_CLASS=QApplication -DQT_MESSAGELOGCONTEXT -DGIT_COMMIT_SHA=\"d7e2ef283a6c9b48f2e405fa7bd0f46dd3500c0a\" -DQET_LANG_PATH=/usr/local/share/qelectrotech/lang/ -DQET_COMMON_COLLECTION_PATH=/usr/local/share/qelectrotech/elements/ -DQET_COMMON_TBT_PATH=/usr/local/share/qelectrotech/titleblocks/ -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_XML_LIB -DQT_SQL_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB -I../../qet_git -I. -I../SingleApplication -I../sources/ui -I../sources/TerminalStrip/ui -I../../Qt/6.2.2/gcc_64/include -I../../Qt/6.2.2/gcc_64/include/QtSvg -I../../Qt/6.2.2/gcc_64/include/QtPrintSupport -I../../Qt/6.2.2/gcc_64/include/KF6/KWidgetsAddons -I../../Qt/6.2.2/gcc_64/include/QtWidgets -I../../Qt/6.2.2/gcc_64/include/QtGui -I../../Qt/6.2.2/gcc_64/include/QtNetwork -I../../Qt/6.2.2/gcc_64/include/QtXml -I../../Qt/6.2.2/gcc_64/include/QtSql -I../../Qt/6.2.2/gcc_64/include/QtConcurrent -I../../Qt/6.2.2/gcc_64/include/KF6/KCoreAddons -I../../Qt/6.2.2/gcc_64/include/QtCore -Irelease -I. -I../../Qt/6.2.2/gcc_64/mkspecs/linux-g++ -o release/xmlprojectelementcollectionitem.o ../sources/ElementsCollection/xmlprojectelementcollectionitem.cpp
make[1]: *** [Makefile.Release:62978: release/elementslocation.o] Error 1
make[1]: *** Attente des tâches non terminées....
make[1] : on quitte le répertoire « /home/laurent/qet_git/build »
make: *** [Makefile:42: release] Error 2

https://download.qelectrotech.org/qet/forum_img_2/Qt6_bug.png

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

Re: Linux compile with Qt online versions

https://doc-snapshots.qt.io/qt6-dev/qre … ssion.html

https://doc.qt.io/qt-5/qregularexpressi … gexp-users

Porting from QRegExp's Exact Matching
Exact matching indicates whether the regular expression matches the entire subject string. For example, the classes yield on the subject string "abc123":

QRegExp::exactMatch()    QRegularExpressionMatch::hasMatch()
"\\d+"    false    true
"[a-z]+\\d+"    true    true
Exact matching is not reflected in QRegularExpression. If you want to be sure that the subject string matches the regular expression exactly, you can wrap the pattern using the anchoredPattern() function:

QString p("a .*|pattern");

// re matches exactly the pattern string p
QRegularExpression re(QRegularExpression::anchoredPattern(p));
Porting from QRegExp's Partial Matching
When using QRegExp::exactMatch(), if an exact match was not found, one could still find out how much of the subject string was matched by the regular expression by calling QRegExp::matchedLength(). If the returned length was equal to the subject string's length, then one could conclude that a partial match was found.

QRegularExpression supports partial matching explicitly by means of the appropriate MatchType.

https://stackoverflow.com/questions/685 … tch-in-qt6
https://github.com/Komet/MediaElch/issues/1086

bugwelle commented on 16 Dec 2020 •
edited
QRegEx is deprecated and was removed in Qt 6. If we want to upgrade, we need to replace it.

Notable differences:

https://doc.qt.io/qt-5/qregularexpressi … gexp-users
Upgrade step by step. We use similar regex names throughout MediaElch. So we could:

replace rx.cap( by match.captured(
replace QRegEx by QRegularExpression
replace if (rx.indexIn( by QRegularExpressionMatch match = rx.match(searchString); if (match.hasMatch()) and update the invalid code parts
replace .setCaseSensitivity by .setPatternOptions
For lastIndexIn patterns, we can rewrite it using QString::lastIndexIn:

    rx.setPattern("[-\\s_]");
    while (name.length() > 0 && rx.lastIndexIn(name) == name.length() - 1) {
        name.chop(1);
    }
becomes

    rx.setPattern("[-\\s_]");
    while (name.length() > 0 && name.lastIndexOf(rx) == name.length() - 1) {
        name.chop(1);
    }

https://github.com/Komet/MediaElch/pull … 6477a862fd

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

Re: Linux compile with Qt online versions

CMake Warning at build/_deps/kcoreaddons-src/CMakeLists.txt:7 (find_package):
  Could not find a configuration file for package "ECM" that is compatible                                                                                                                                                                                                   
  with requested version "5.77.0".  ..... What the fuck ...

laurent@debian:~$ apt-cache policy libkf5coreaddons-dev
libkf5coreaddons-dev:
  Installé : 5.78.0-4
  Candidat : 5.78.0-4
 Table de version :
 *** 5.78.0-4 500
        500 http://deb.debian.org/debian bullseye/main amd64 Packages
        100 /var/lib/dpkg/status

laurent@debian:~$ apt-cache policy libkf5widgetsaddons-dev
libkf5widgetsaddons-dev:
  Installé : 5.78.0-2
  Candidat : 5.78.0-2
 Table de version :
 *** 5.78.0-2 500
        500 http://deb.debian.org/debian bullseye/main amd64 Packages
        100 /var/lib/dpkg/status
laurent@debian:~/kde/mkspecs/modules$ cat qt_KCoreAddons.pri 
QT.KCoreAddons.VERSION = 5.91.0
QT.KCoreAddons.MAJOR_VERSION = 5
QT.KCoreAddons.MINOR_VERSION = 91
QT.KCoreAddons.PATCH_VERSION = 0
QT.KCoreAddons.name = KF5CoreAddons
QT.KCoreAddons.module = KF5CoreAddons
QT.KCoreAddons.defines = 
QT.KCoreAddons.includes = $$PWD/../../include/KF6/KCoreAddons
QT.KCoreAddons.private_includes =
QT.KCoreAddons.libs = $$PWD/../../lib/x86_64-linux-gnu
QT.KCoreAddons.depends = core
QT.KCoreAddons.module_config = 

laurent@debian:~/Qt/6.2.2/gcc_64/mkspecs/modules$ cat qt_KCoreAddons.pri 
QT.KCoreAddons.VERSION = 5.91.0
QT.KCoreAddons.MAJOR_VERSION = 5
QT.KCoreAddons.MINOR_VERSION = 91
QT.KCoreAddons.PATCH_VERSION = 0
QT.KCoreAddons.name = KF5CoreAddons
QT.KCoreAddons.module = KF5CoreAddons
QT.KCoreAddons.defines = 
QT.KCoreAddons.includes = ~/kde/include/KF6/KCoreAddons
QT.KCoreAddons.private_includes =
QT.KCoreAddons.libs = ~/kde/lib/x86_64-linux-gnu
QT.KCoreAddons.depends = core
QT.KCoreAddons.module_config = 
laurent@debian:~/qet_git/build$ /usr/local/bin/cmake .. -G Ninja -DBUILD_WITH_QT6=ON -DEXCLUDE_DEPRECATED_BEFORE_AND_AT=CURRENT
-- The CXX compiler identification is GNU 8.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
_____________________________________________________________________
Copyright 2006 The QElectroTech Team
This file is part of QElectroTech.

QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with QElectroTech.  If not, see <http://www.gnu.org/licenses/>.
_____________________________________________________________________
Add sub directorie tests
.____________________________________________________________________
. PROJECT_NAME              :unittests
. PROJECT_SOURCE_DIR        :/home/laurent/qet_git/tests
. Add sub directorie catch
..___________________________________________________________________
.. PROJECT_NAME              :C_unittests
.. PROJECT_SOURCE_DIR        :/home/laurent/qet_git/tests/catch
.. QET_DIR                   :/home/laurent/qet_git
.. QET_COMPONENTS is not set !!! I set them up !!!
 - qet_compilation_vars
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
.. QT_VERSION_MAJOR   :6
-- Performing Test HAVE_STDATOMIC
-- Performing Test HAVE_STDATOMIC - Success
-- Found WrapAtomic: TRUE  
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so   
-- Found WrapOpenGL: TRUE  
-- Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR) (Required is at least version "0.5.0")
-- Found WrapVulkanHeaders: /usr/include  
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.1.1d")  
-- Found WrapOpenSSLHeaders: /usr/include (found version "1.1.1d") 
 - fetch_kdeaddons
 - fetch_singleapplication
 - fetch_pugixml
.. CATCH_INCLUDE_DIR is not set,assuming Catch2 can be found automatically in your system
. Add sub directorie googletest
..___________________________________________________________________
.. PROJECT_NAME              :G_unittests
.. PROJECT_SOURCE_DIR        :/home/laurent/qet_git/tests/googletest
.. QET_DIR                   :/home/laurent/qet_git
.. QET_COMPONENTS is not set !!! I set them up !!!
 - qet_compilation_vars
.. QT_VERSION_MAJOR          :6
-- Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR) (Required is at least version "0.5.0")
CMake Deprecation Warning at build/_deps/gtest-src/CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- The C compiler identification is GNU 8.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
CMake Deprecation Warning at build/_deps/gtest-src/googlemock/CMakeLists.txt:45 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Deprecation Warning at build/_deps/gtest-src/googletest/CMakeLists.txt:56 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Found PythonInterp: /usr/bin/python (found version "2.7.16") 
 - fetch_kdeaddons
 - fetch_singleapplication
 - fetch_pugixml
. Add sub directorie googlemock
..___________________________________________________________________
.. PROJECT_NAME              :G_unitmocktests
.. PROJECT_SOURCE_DIR        :/home/laurent/qet_git/tests/googlemock
.. QET_DIR                   :/home/laurent/qet_git
.. QET_COMPONENTS is not set !!! I set them up !!!
 - qet_compilation_vars
.. QT_VERSION_MAJOR          :6
-- Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR) (Required is at least version "0.5.0")
 - fetch_kdeaddons
 - fetch_singleapplication
 - fetch_pugixml
. Add sub directorie qttest
..___________________________________________________________________
.. PROJECT_NAME              :qt_unittests
.. PROJECT_SOURCE_DIR        :/home/laurent/qet_git/tests/qttest
.. QET_DIR                   :/home/laurent/qet_git
.. QET_COMPONENTS is not set !!! I set them up !!!
 - qet_compilation_vars
.. QT_VERSION_MAJOR          :6
-- Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR) (Required is at least version "0.5.0")
 - fetch_kdeaddons
 - fetch_singleapplication
 - fetch_pugixml
 - paths_compilation_installation
 - start_options
 - developer_options
 - git_update_submodules
 - git_last_commit_sha
 - fetch_kdeaddons
CMake Warning at build/_deps/ecm-src/docs/CMakeLists.txt:10 (find_package):
  No "FindSphinx.cmake" found in CMAKE_MODULE_PATH.                                                                                                                                                                                                                           


CMake Warning (dev) at build/_deps/ecm-src/docs/CMakeLists.txt:10 (find_package):
  FindSphinx.cmake must either be part of this project itself, in this case                                                                                                                                                                                                   
  adjust CMAKE_MODULE_PATH so that it points to the correct location inside                                                                                                                                                                                                   
  its source tree.                                                                                                                                                                                                                                                            

  Or it must be installed by a package which has already been found via                                                                                                                                                                                                       
  find_package().  In this case make sure that package has indeed been found                                                                                                                                                                                                  
  and adjust CMAKE_MODULE_PATH to contain the location where that package has                                                                                                                                                                                                 
  installed FindSphinx.cmake.  This must be a location provided by that                                                                                                                                                                                                       
  package.  This error in general means that the buildsystem of this project                                                                                                                                                                                                  
  is relying on a Find-module without ensuring that it is actually available.                                                                                                                                                                                                 

This warning is for project developers.  Use -Wno-dev to suppress it.                                                                                                                                                                                                         

CMake Warning at build/_deps/ecm-src/docs/CMakeLists.txt:20 (find_package):
  No "FindQCollectionGenerator.cmake" found in CMAKE_MODULE_PATH.                                                                                                                                                                                                             


CMake Warning (dev) at build/_deps/ecm-src/docs/CMakeLists.txt:20 (find_package):
  FindQCollectionGenerator.cmake must either be part of this project itself,                                                                                                                                                                                                  
  in this case adjust CMAKE_MODULE_PATH so that it points to the correct                                                                                                                                                                                                      
  location inside its source tree.                                                                                                                                                                                                                                            

  Or it must be installed by a package which has already been found via                                                                                                                                                                                                       
  find_package().  In this case make sure that package has indeed been found                                                                                                                                                                                                  
  and adjust CMAKE_MODULE_PATH to contain the location where that package has                                                                                                                                                                                                 
  installed FindQCollectionGenerator.cmake.  This must be a location provided                                                                                                                                                                                                 
  by that package.  This error in general means that the buildsystem of this                                                                                                                                                                                                  
  project is relying on a Find-module without ensuring that it is actually                                                                                                                                                                                                    
  available.                                                                                                                                                                                                                                                                  

This warning is for project developers.  Use -Wno-dev to suppress it.                                                                                                                                                                                                         

-- The following OPTIONAL packages have been found:

 * PythonInterp
 * Qt6LinguistTools
 * Qt6CoreTools (required version >= 6.2.2)
 * OpenGL
 * WrapVulkanHeaders
 * Qt6GuiTools (required version >= 6.2.2)
 * Qt6DBusTools (required version >= 6.2.2)
 * Qt6DBus (required version >= 6.2.2)
 * Qt6Gui (required version >= 6.2.2)
 * Qt6PrintSupport
 * Qt6Xml
 * Qt6Svg
 * Qt6Sql
 * OpenSSL
 * WrapOpenSSLHeaders
 * Qt6Network
 * Qt6WidgetsTools (required version >= 6.2.2)
 * Qt6Widgets
 * Qt6Concurrent
 * Qt6Test

-- The following REQUIRED packages have been found:

 * QT
 * Threads
 * Qt6

-- The following features have been disabled:

 * BUILD_HTML_DOCS, Generate HTML documentation for installed modules.
 * BUILD_MAN_DOCS, Generate man page documentation for installed modules.
 * BUILD_QTHELP_DOCS, Generate QtHelp documentation for installed modules.
 * BUILD_TESTING, Build automated tests.

-- The following OPTIONAL packages have not been found:

 * XKB (required version >= 0.5.0), XKB API common to servers and clients., <http://xkbcommon.org>
 * Sphinx (required version >= 1.2), Tool to generate documentation., <https://www.sphinx-doc.org/>
   Required to build documentation for Extra CMake Modules.
 * QCollectionGenerator, Qt help collection generator., <https://www.qt.io/>
   Required to build Extra CMake Modules documentation in Qt Help format.

CMake Warning at build/_deps/kcoreaddons-src/CMakeLists.txt:7 (find_package):
  Could not find a configuration file for package "ECM" that is compatible                                                                                                                                                                                                    
  with requested version "5.77.0".                                                                                                                                                                                                                                            

  The following configuration files were considered but not accepted:                                                                                                                                                                                                         

    /usr/share/ECM/cmake/ECMConfig.cmake, version: 5.54.0                                                                                                                                                                                                                     



-- 
 * ECM (required version >= 5.77.0), Extra CMake Modules., <https://commits.kde.org/extra-cmake-modules>

CMake Error at /usr/local/share/cmake-3.22/Modules/FeatureSummary.cmake:464 (message):
  feature_summary() Error: REQUIRED package(s) are missing, aborting CMake                                                                                                                                                                                                    
  run.                                                                                                                                                                                                                                                                        
Call Stack (most recent call first):                                                                                                                                                                                                                                          
  build/_deps/kcoreaddons-src/CMakeLists.txt:9 (feature_summary)                                                                                                                                                                                                              


-- Configuring incomplete, errors occurred!
See also "/home/laurent/qet_git/build/CMakeFiles/CMakeOutput.log".
See also "/home/laurent/qet_git/build/CMakeFiles/CMakeError.log".

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

Re: Linux compile with Qt online versions

The Extra CMake Modules package, or ECM, adds to the modules provided by CMake, including ones used by

find_package()

https://api.kde.org/frameworks/extra-cm … index.html

Re: Linux compile with Qt online versions

@ Simon,
you can compile last 0.9-dev on Qt6.X without error?, or saw like me:
../sources/ElementsCollection/elementslocation.cpp: In member function ‘bool ElementsLocation::setXml(const QDomDocument&) const’:
../sources/ElementsCollection/elementslocation.cpp:783:11: error: ‘class QRegularExpression’ has no member named ‘exactMatch’; did you mean ‘NoMatch’?
    if (rx.exactMatch(path_))
           ^~~~~~~~~~
           NoMatch
../sources/ElementsCollection/elementslocation.cpp:788:10: error: ‘class QRegularExpression’ has no member named ‘cap’; did you mean ‘swap’?
       rx.cap(1),
          ^~~
          swap
../sources/ElementsCollection/elementslocation.cpp:789:10: error: ‘class QRegularExpression’ has no member named ‘cap’; did you mean ‘swap’?
       rx.cap(2),
          ^~~
          swap

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

Re: Linux compile with Qt online versions

Possible fix ? ... I don't know this part ...
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#        pragma message("@TODO ad Core5Compat to Cmake")
#endif
            qDebug() << "Help code for QT 6 or later";

            QString               path_ = collectionPath(false);
            QRegularExpression rx ("^(.*)/(.*\\.elmt)$");
            if (!rx.isValid())
    {
        qWarning()
            <<QObject::tr("this is an error in the code")
            << rx.errorString()
            << rx.patternErrorOffset();
    }
            QRegularExpressionMatch match = rx.match(path_);
            if (match.hasMatch())
            {
                return project()
                    ->embeddedElementCollection()
                    ->addElementDefinition(
                        match.captured(1),
                        match.captured(2),
                        xml_document.documentElement());
            }
            else
            {
                qDebug() << "ElementsLocation::setXml :"
                            " rx don't match";
            }
#endif

But it segfault again .. further in the code ..

nclude-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include ../sources/titleblocktemplate.h -o release/moc_titleblocktemplate.cpp
../sources/TerminalStrip/terminalstrip.cpp: In member function ‘bool PhysicalTerminal::setLevelOf(shared_real_terminal, int)’:
../sources/TerminalStrip/terminalstrip.cpp:305:76: error: no matching function for call to ‘min(int&, qsizetype)’
  305 |     m_real_terminal.swapItemsAt(i, std::min(level, m_real_terminal.size()-1));
      |                                                                            ^

     
In file included from ../sources/TerminalStrip/ui/terminalstripeditor.cpp:18:
../sources/TerminalStrip/ui/terminalstripeditor.h:74:45: error: field ‘m_item_strip_H’ has incomplete type ‘QHash<QTreeWidgetItem*, TerminalStrip*>’
   74 |   QHash<QTreeWidgetItem *, TerminalStrip *> m_item_strip_H;
      |                                             ^~~~~~~~~~~~~~
In file included from ../../Qt/6.2.2/gcc_64/include/QtCore/qtypeinfo.h:42,
                 from ../../Qt/6.2.2/gcc_64/include/QtCore/qglobal.h:1422,
                 from ../../Qt/6.2.2/gcc_64/include/QtGui/qtguiglobal.h:43,
                 from ../../Qt/6.2.2/gcc_64/include/QtWidgets/qtwidgetsglobal.h:43,
                 from ../../Qt/6.2.2/gcc_64/include/QtWidgets/qdialog.h:43,
                 from ../../Qt/6.2.2/gcc_64/include/QtWidgets/QDialog:1,
                 from ../sources/TerminalStrip/ui/terminalstripeditor.h:21,
                 from ../sources/TerminalStrip/ui/terminalstripeditor.cpp:18:
../../Qt/6.2.2/gcc_64/include/QtCore/qcontainerfwd.h:51:43: note: declaration of ‘class QHash<QTreeWidgetItem*, TerminalStrip*>’
   51 | template <typename Key, typename T> class QHash;
      |                                           ^~~~~
In file included from ../sources/TerminalStrip/ui/terminalstripeditor.cpp:18:
../sources/TerminalStrip/ui/terminalstripeditor.h:75:43: error: field ‘m_uuid_terminal_H’ has incomplete type ‘QHash<QUuid, QPointer<TerminalElement> >’
   75 |   QHash<QUuid, QPointer<TerminalElement>> m_uuid_terminal_H;
      |                                           ^~~~~~~~~~~~~~~~~
In file included from ../../Qt/6.2.2/gcc_64/include/QtCore/qtypeinfo.h:42,
                 from ../../Qt/6.2.2/gcc_64/include/QtCore/qglobal.h:1422,
                 from ../../Qt/6.2.2/gcc_64/include/QtGui/qtguiglobal.h:43,
                 from ../../Qt/6.2.2/gcc_64/include/QtWidgets/qtwidgetsglobal.h:43,
                 from ../../Qt/6.2.2/gcc_64/include/QtWidgets/qdialog.h:43,
                 from ../../Qt/6.2.2/gcc_64/include/QtWidgets/QDialog:1,
                 from ../sources/TerminalStrip/ui/terminalstripeditor.h:21,
                 from ../sources/TerminalStrip/ui/terminalstripeditor.cpp:18:
../../Qt/6.2.2/gcc_64/include/QtCore/qcontainerfwd.h:51:43: note: declaration of ‘class QHash<QUuid, QPointer<TerminalElement> >’
   51 | template <typename Key, typename T> class QHash;
      |                                           ^~~~~
In file included from ../sources/TerminalStrip/ui/terminalstripeditor.cpp:18:
../sources/TerminalStrip/ui/terminalstripeditor.h:76:41: error: field ‘m_uuid_strip_H’ has incomplete type ‘QHash<QUuid, QPointer<TerminalStrip> >’
   76 |   QHash<QUuid, QPointer<TerminalStrip>> m_uuid_strip_H;
      |                                         ^~~~~~~~~~~~~~
In file included from ../../Qt/6.2.2/gcc_64/include/QtCore/qtypeinfo.h:42,
                 from ../../Qt/6.2.2/gcc_64/include/QtCore/qglobal.h:1422,
                 from ../../Qt/6.2.2/gcc_64/include/QtGui/qtguiglobal.h:43,
                 from ../../Qt/6.2.2/gcc_64/include/QtWidgets/qtwidgetsglobal.h:43,
                 from ../../Qt/6.2.2/gcc_64/include/QtWidgets/qdialog.h:43,
                 from ../../Qt/6.2.2/gcc_64/include/QtWidgets/QDialog:1,
                 from ../sources/TerminalStrip/ui/terminalstripeditor.h:21,
                 from ../sources/TerminalStrip/ui/terminalstripeditor.cpp:18:
../../Qt/6.2.2/gcc_64/include/QtCore/qcontainerfwd.h:51:43: note: declaration of ‘class QHash<QUuid, QPointer<TerminalStrip> >’
   51 | template <typename Key, typename T> class QHash;

https://download.qelectrotech.org/qet/forum_img_2/Qt6_FTBFS.png

https://doc.qt.io/qt-6/portingguide.html
https://doc.qt.io/qt-6/porting-to-qt6-using-clazy.html

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

Re: Linux compile with Qt online versions

scorpio810 wrote:

@ Simon,
you can compile last 0.9-dev on Qt6.X without error?, or saw like me:

no, needs to debug.:-/

Re: Linux compile with Qt online versions

https://www.ics.com/blog/get-ready-port … -qt-6-2022
https://www.qt.io/blog/porting-from-qt- … at-library
https://www.qt.io/blog/porting-from-qt- … azy-checks

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

Re: Linux compile with Qt online versions

thanks, looking at it.
And I'll give it a try.
KF6 or 5 source of my frustration...

Re: Linux compile with Qt online versions

https://www.volkerkrause.eu/2022/02/12/ … tatus.html

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

Re: Linux compile with Qt online versions

https://invent.kde.org/graphics/digikam … f4fa51db25

KF6 is now compiled to 100%, excpeted libksane and Marble, not yet ported to...
KF6 is now compiled to 100%, excpeted libksane and Marble, not yet ported to Qt6. Both will be checked later.
Compile Qt6 version of fcitx-qt.
Now we can start to check QtAV, and start to backport all Qt6 port patches.

https://bugs.kde.org/show_bug.cgi?id=264879
https://bugs.kde.org/show_bug.cgi?id=416704

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

Re: Linux compile with Qt online versions

Qt6.2.4 + KF5 5.93 errors log:

https://download.qelectrotech.org/qet/s … .error.txt

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."

Re: Linux compile with Qt online versions

Qt 6.4 + KF6 checks:
https://download.qelectrotech.org/qet/s … _cmake.txt
https://download.qelectrotech.org/qet/s … _build.txt
https://download.qelectrotech.org/qet/s … ja_log.txt


https://download.qelectrotech.org/qet/s … qmake6.txt

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."