Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to migrate from Qt5 to Qt6 ?

How to migrate from Qt5 to Qt6 ?

Scheduled Pinned Locked Moved Unsolved General and Desktop
3 Posts 3 Posters 855 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    AndrzejB
    wrote on last edited by AndrzejB
    #1

    My program works with Qt5 and KF5
    I change it to Qt6
    my CMakeLists.txt

    cmake_minimum_required(VERSION 3.5)
    
    project(EdiQ VERSION 0.1 LANGUAGES CXX)
    
    if(CMAKE_COMPILER_IS_GNUCXX)
        SET(GCC_COVERAGE_COMPILE_FLAGS "-Werror=return-type")
        add_definitions(${GCC_COVERAGE_COMPILE_FLAGS})
    endif()
    
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    
    set(CMAKE_AUTOUIC ON)
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTORCC ON)
    
    set(CMAKE_CXX_STANDARD 14)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    # SingleApplication base class
    set(QAPPLICATION_CLASS QApplication)
    add_subdirectory(SingleApplication)
    
    find_package(QT NAMES Qt6)
    find_package(Qt6 REQUIRED COMPONENTS Widgets)
    
    set(KF_LIB_SYNTAX KF6SyntaxHighlighting)
    
    set(BOTAN_DIR "/usr/include/botan-2")
    IF(NOT EXISTS ${BOTAN_DIR})
        message(FATAL_ERROR "Not found ${BOTAN_DIR}")
    ELSE()
        message(STATUS "Found ${BOTAN_DIR}")
    ENDIF()
    
    set(PROJECT_SOURCES
            main.cpp
            mainwindow.cpp mainwindow.h
            CodeEditor.cpp CodeEditor.h
            IEditorFactory.h IEditor.h
            EditorFactory.cpp EditorFactory.h
            UntitledCounter.cpp UntitledCounter.h
            EdiException.h
            CodeEditorSidebar.cpp CodeEditorSidebar.h
            PlainTextEdit.h
            SearchBar.cpp SearchBar.h
            Popup.cpp Popup.h
            raise.cpp raise.h XRaise.cpp XRaise.h
            een.cpp een.h
            PlainTextEdit.cpp)
    
    qt_add_executable(${PROJECT_NAME}
        MANUAL_FINALIZATION
            res/icons.qrc
        ${PROJECT_SOURCES}
    )
    
    target_include_directories(${PROJECT_NAME} PRIVATE
            ${BOTAN_DIR})
    
    target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Widgets
            SingleApplication::SingleApplication
            ${KF_LIB_SYNTAX}
            X11 botan-2
            )
    
    set_target_properties(${PROJECT_NAME} PROPERTIES
        MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
        MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
        MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
        MACOSX_BUNDLE TRUE
        WIN32_EXECUTABLE TRUE
    )
    
    install(TARGETS ${PROJECT_NAME}
        BUNDLE DESTINATION .
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
    
    qt_finalize_executable(${PROJECT_NAME})
    

    my SingleApplication/CMakeLists.txt

    cmake_minimum_required(VERSION 3.12.0)
    
    project(SingleApplication LANGUAGES CXX DESCRIPTION "Replacement for QtSingleApplication")
    
    set(CMAKE_AUTOMOC ON)
    
    add_library(${PROJECT_NAME} STATIC
        singleapplication.cpp
        singleapplication_p.cpp
    )
    add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
    
    if(NOT QT_DEFAULT_MAJOR_VERSION)
        set(QT_DEFAULT_MAJOR_VERSION 5 CACHE STRING "Qt version to use (5 or 6), defaults to 5")
    endif()
    
    # Find dependencies
    set(QT_COMPONENTS Core Network)
    set(QT_LIBRARIES Qt6::Core Qt6::Network)
    
    if(QAPPLICATION_CLASS STREQUAL QApplication)
        list(APPEND QT_COMPONENTS Widgets)
        list(APPEND QT_LIBRARIES Qt6::Widgets)
    elseif(QAPPLICATION_CLASS STREQUAL QGuiApplication)
        list(APPEND QT_COMPONENTS Gui)
        list(APPEND QT_LIBRARIES Qt6::Gui)
    else()
        set(QAPPLICATION_CLASS QCoreApplication)
    endif()
    
    find_package(Qt6 COMPONENTS ${QT_COMPONENTS} REQUIRED)
    
    option(SINGLEAPPLICATION_DOCUMENTATION "Generate Doxygen documentation" OFF)
    if(SINGLEAPPLICATION_DOCUMENTATION)
        find_package(Doxygen)
    endif()
    
    target_link_libraries(${PROJECT_NAME} PUBLIC ${QT_LIBRARIES})
    
    if(WIN32)
        target_link_libraries(${PROJECT_NAME} PRIVATE advapi32)
    endif()
    
    target_compile_definitions(${PROJECT_NAME} PUBLIC QAPPLICATION_CLASS=${QAPPLICATION_CLASS})
    target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
    target_compile_definitions(${PROJECT_NAME} PRIVATE
        QT_NO_CAST_TO_ASCII
        QT_NO_CAST_FROM_ASCII
        QT_NO_URL_CAST_FROM_STRING
        QT_NO_CAST_FROM_BYTEARRAY
        QT_USE_QSTRINGBUILDER
        QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
        QT_NO_KEYWORDS
        QT_NO_FOREACH
    )
    
    if(DOXYGEN_FOUND)
        # Doxygen theme
        include(FetchContent)
        FetchContent_Declare(DoxygenAwesome
            GIT_REPOSITORY https://github.com/jothepro/doxygen-awesome-css
            GIT_TAG 4cd62308d825fe0396d2f66ffbab45d0e247724c # 2.0.3
        )
        FetchContent_MakeAvailable(DoxygenAwesome)
        FetchContent_GetProperties(DoxygenAwesome SOURCE_DIR DoxygenAwesome_SOURCE_DIR)
    
        set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md)
        set(DOXYGEN_GENERATE_TREEVIEW YES)
        set(DOXYGEN_HTML_HEADER ${DoxygenAwesome_SOURCE_DIR}/doxygen-custom/header.html)
        set(DOXYGEN_HTML_EXTRA_STYLESHEET ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome.css)
        set(DOXYGEN_HTML_EXTRA_FILES
            ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome-fragment-copy-button.js
            ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome-paragraph-link.js
            ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome-darkmode-toggle.js
        )
    
        doxygen_add_docs(${PROJECT_NAME}Documentation
            singleapplication.h
            CHANGELOG.md
            Windows.md
            README.md
        )
    endif()
    

    I have installed

    sudo apt install qt6-base-dev
    

    libqt6opengl6-dev is already installed:

    $ aptitude search qt | grep opengl | grep 6
    p  libqt5opengl5:i386 - Qt 5 OpenGL module
    v  libqt5opengl5-desktop-dev:i386 - 
    p  libqt5opengl5-dev:i386 - Qt 5 OpenGL library development files
    i A libqt6opengl6 - Qt 6 OpenGL module
    i A libqt6opengl6-dev - Qt 6 OpenGL library development files
    i A libqt6openglwidgets6 - Qt 6 OpenGL widgets module
    p  python3-pyqt5.qtopengl:i386 - Python 3 bindings for Qt5's OpenGL module
    

    and libqt6gui6:

    $ aptitude search qt | grep gui | grep 6
    p  cmake-qt-gui:i386 - Qt based user interface for CMake (cmake-gui)
    p  libqt5gui5:i386 - Qt 5 GUI module
    i A libqt6gui6 - Qt 6 GUI module
    p  linguist-qt6 - Qt 6 Linguist
    

    but are errors:

    CMake Warning at /home/andrzej/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/cmake/linux/x64/share/cmake-3.26/Modules/CMakeFindDependencyMacro.cmake:76 (find_package):
      Found package configuration file:
    
        /usr/lib/x86_64-linux-gnu/cmake/Qt6Gui/Qt6GuiConfig.cmake
    
      but it set Qt6Gui_FOUND to FALSE so package "Qt6Gui" is considered to be
      NOT FOUND.  Reason given by package:
    
      Qt6Gui could not be found because dependency WrapOpenGL could not be found.
    
    Call Stack (most recent call first):
      /usr/lib/x86_64-linux-gnu/cmake/Qt6/QtPublicDependencyHelpers.cmake:14 (find_dependency)
      /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsDependencies.cmake:96 (_qt_internal_find_dependencies)
      /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake:50 (include)
      /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake:219 (find_package)
      SingleApplication/CMakeLists.txt:31 (find_package)
    
    
    CMake Warning at /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake:219 (find_package):
      Found package configuration file:
    
        /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake
    
      but it set Qt6Widgets_FOUND to FALSE so package "Qt6Widgets" is considered
      to be NOT FOUND.  Reason given by package:
    
      Qt6Widgets could not be found because dependency Qt6Gui could not be found.
    
    Call Stack (most recent call first):
      SingleApplication/CMakeLists.txt:31 (find_package)
    
    
    CMake Error at SingleApplication/CMakeLists.txt:31 (find_package):
      Found package configuration file:
    
        /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake
    
      but it set Qt6_FOUND to FALSE so package "Qt6" is considered to be NOT
      FOUND.  Reason given by package:
    
      Failed to find Qt component "Widgets".
    
      Expected Config file at
      "/usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake" exists
    

    Previously I only has been using Qt5, but I want move to Qt6.
    KF5 also works with Qt6 since not packaged KF6?

    Partial Solution:

    sudo apt install libglvnd-dev
    

    helps to satisfy cmake, also KF5 syntax highlighter do, but is runtime error - must be KF6 syntax highlighter (?)

    Christian EhrlicherC JoeCFDJ 2 Replies Last reply
    0
    • A AndrzejB

      My program works with Qt5 and KF5
      I change it to Qt6
      my CMakeLists.txt

      cmake_minimum_required(VERSION 3.5)
      
      project(EdiQ VERSION 0.1 LANGUAGES CXX)
      
      if(CMAKE_COMPILER_IS_GNUCXX)
          SET(GCC_COVERAGE_COMPILE_FLAGS "-Werror=return-type")
          add_definitions(${GCC_COVERAGE_COMPILE_FLAGS})
      endif()
      
      set(CMAKE_INCLUDE_CURRENT_DIR ON)
      
      set(CMAKE_AUTOUIC ON)
      set(CMAKE_AUTOMOC ON)
      set(CMAKE_AUTORCC ON)
      
      set(CMAKE_CXX_STANDARD 14)
      set(CMAKE_CXX_STANDARD_REQUIRED ON)
      # SingleApplication base class
      set(QAPPLICATION_CLASS QApplication)
      add_subdirectory(SingleApplication)
      
      find_package(QT NAMES Qt6)
      find_package(Qt6 REQUIRED COMPONENTS Widgets)
      
      set(KF_LIB_SYNTAX KF6SyntaxHighlighting)
      
      set(BOTAN_DIR "/usr/include/botan-2")
      IF(NOT EXISTS ${BOTAN_DIR})
          message(FATAL_ERROR "Not found ${BOTAN_DIR}")
      ELSE()
          message(STATUS "Found ${BOTAN_DIR}")
      ENDIF()
      
      set(PROJECT_SOURCES
              main.cpp
              mainwindow.cpp mainwindow.h
              CodeEditor.cpp CodeEditor.h
              IEditorFactory.h IEditor.h
              EditorFactory.cpp EditorFactory.h
              UntitledCounter.cpp UntitledCounter.h
              EdiException.h
              CodeEditorSidebar.cpp CodeEditorSidebar.h
              PlainTextEdit.h
              SearchBar.cpp SearchBar.h
              Popup.cpp Popup.h
              raise.cpp raise.h XRaise.cpp XRaise.h
              een.cpp een.h
              PlainTextEdit.cpp)
      
      qt_add_executable(${PROJECT_NAME}
          MANUAL_FINALIZATION
              res/icons.qrc
          ${PROJECT_SOURCES}
      )
      
      target_include_directories(${PROJECT_NAME} PRIVATE
              ${BOTAN_DIR})
      
      target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Widgets
              SingleApplication::SingleApplication
              ${KF_LIB_SYNTAX}
              X11 botan-2
              )
      
      set_target_properties(${PROJECT_NAME} PROPERTIES
          MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
          MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
          MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
          MACOSX_BUNDLE TRUE
          WIN32_EXECUTABLE TRUE
      )
      
      install(TARGETS ${PROJECT_NAME}
          BUNDLE DESTINATION .
          LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
      
      qt_finalize_executable(${PROJECT_NAME})
      

      my SingleApplication/CMakeLists.txt

      cmake_minimum_required(VERSION 3.12.0)
      
      project(SingleApplication LANGUAGES CXX DESCRIPTION "Replacement for QtSingleApplication")
      
      set(CMAKE_AUTOMOC ON)
      
      add_library(${PROJECT_NAME} STATIC
          singleapplication.cpp
          singleapplication_p.cpp
      )
      add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
      
      if(NOT QT_DEFAULT_MAJOR_VERSION)
          set(QT_DEFAULT_MAJOR_VERSION 5 CACHE STRING "Qt version to use (5 or 6), defaults to 5")
      endif()
      
      # Find dependencies
      set(QT_COMPONENTS Core Network)
      set(QT_LIBRARIES Qt6::Core Qt6::Network)
      
      if(QAPPLICATION_CLASS STREQUAL QApplication)
          list(APPEND QT_COMPONENTS Widgets)
          list(APPEND QT_LIBRARIES Qt6::Widgets)
      elseif(QAPPLICATION_CLASS STREQUAL QGuiApplication)
          list(APPEND QT_COMPONENTS Gui)
          list(APPEND QT_LIBRARIES Qt6::Gui)
      else()
          set(QAPPLICATION_CLASS QCoreApplication)
      endif()
      
      find_package(Qt6 COMPONENTS ${QT_COMPONENTS} REQUIRED)
      
      option(SINGLEAPPLICATION_DOCUMENTATION "Generate Doxygen documentation" OFF)
      if(SINGLEAPPLICATION_DOCUMENTATION)
          find_package(Doxygen)
      endif()
      
      target_link_libraries(${PROJECT_NAME} PUBLIC ${QT_LIBRARIES})
      
      if(WIN32)
          target_link_libraries(${PROJECT_NAME} PRIVATE advapi32)
      endif()
      
      target_compile_definitions(${PROJECT_NAME} PUBLIC QAPPLICATION_CLASS=${QAPPLICATION_CLASS})
      target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
      target_compile_definitions(${PROJECT_NAME} PRIVATE
          QT_NO_CAST_TO_ASCII
          QT_NO_CAST_FROM_ASCII
          QT_NO_URL_CAST_FROM_STRING
          QT_NO_CAST_FROM_BYTEARRAY
          QT_USE_QSTRINGBUILDER
          QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
          QT_NO_KEYWORDS
          QT_NO_FOREACH
      )
      
      if(DOXYGEN_FOUND)
          # Doxygen theme
          include(FetchContent)
          FetchContent_Declare(DoxygenAwesome
              GIT_REPOSITORY https://github.com/jothepro/doxygen-awesome-css
              GIT_TAG 4cd62308d825fe0396d2f66ffbab45d0e247724c # 2.0.3
          )
          FetchContent_MakeAvailable(DoxygenAwesome)
          FetchContent_GetProperties(DoxygenAwesome SOURCE_DIR DoxygenAwesome_SOURCE_DIR)
      
          set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md)
          set(DOXYGEN_GENERATE_TREEVIEW YES)
          set(DOXYGEN_HTML_HEADER ${DoxygenAwesome_SOURCE_DIR}/doxygen-custom/header.html)
          set(DOXYGEN_HTML_EXTRA_STYLESHEET ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome.css)
          set(DOXYGEN_HTML_EXTRA_FILES
              ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome-fragment-copy-button.js
              ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome-paragraph-link.js
              ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome-darkmode-toggle.js
          )
      
          doxygen_add_docs(${PROJECT_NAME}Documentation
              singleapplication.h
              CHANGELOG.md
              Windows.md
              README.md
          )
      endif()
      

      I have installed

      sudo apt install qt6-base-dev
      

      libqt6opengl6-dev is already installed:

      $ aptitude search qt | grep opengl | grep 6
      p  libqt5opengl5:i386 - Qt 5 OpenGL module
      v  libqt5opengl5-desktop-dev:i386 - 
      p  libqt5opengl5-dev:i386 - Qt 5 OpenGL library development files
      i A libqt6opengl6 - Qt 6 OpenGL module
      i A libqt6opengl6-dev - Qt 6 OpenGL library development files
      i A libqt6openglwidgets6 - Qt 6 OpenGL widgets module
      p  python3-pyqt5.qtopengl:i386 - Python 3 bindings for Qt5's OpenGL module
      

      and libqt6gui6:

      $ aptitude search qt | grep gui | grep 6
      p  cmake-qt-gui:i386 - Qt based user interface for CMake (cmake-gui)
      p  libqt5gui5:i386 - Qt 5 GUI module
      i A libqt6gui6 - Qt 6 GUI module
      p  linguist-qt6 - Qt 6 Linguist
      

      but are errors:

      CMake Warning at /home/andrzej/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/cmake/linux/x64/share/cmake-3.26/Modules/CMakeFindDependencyMacro.cmake:76 (find_package):
        Found package configuration file:
      
          /usr/lib/x86_64-linux-gnu/cmake/Qt6Gui/Qt6GuiConfig.cmake
      
        but it set Qt6Gui_FOUND to FALSE so package "Qt6Gui" is considered to be
        NOT FOUND.  Reason given by package:
      
        Qt6Gui could not be found because dependency WrapOpenGL could not be found.
      
      Call Stack (most recent call first):
        /usr/lib/x86_64-linux-gnu/cmake/Qt6/QtPublicDependencyHelpers.cmake:14 (find_dependency)
        /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsDependencies.cmake:96 (_qt_internal_find_dependencies)
        /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake:50 (include)
        /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake:219 (find_package)
        SingleApplication/CMakeLists.txt:31 (find_package)
      
      
      CMake Warning at /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake:219 (find_package):
        Found package configuration file:
      
          /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake
      
        but it set Qt6Widgets_FOUND to FALSE so package "Qt6Widgets" is considered
        to be NOT FOUND.  Reason given by package:
      
        Qt6Widgets could not be found because dependency Qt6Gui could not be found.
      
      Call Stack (most recent call first):
        SingleApplication/CMakeLists.txt:31 (find_package)
      
      
      CMake Error at SingleApplication/CMakeLists.txt:31 (find_package):
        Found package configuration file:
      
          /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake
      
        but it set Qt6_FOUND to FALSE so package "Qt6" is considered to be NOT
        FOUND.  Reason given by package:
      
        Failed to find Qt component "Widgets".
      
        Expected Config file at
        "/usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake" exists
      

      Previously I only has been using Qt5, but I want move to Qt6.
      KF5 also works with Qt6 since not packaged KF6?

      Partial Solution:

      sudo apt install libglvnd-dev
      

      helps to satisfy cmake, also KF5 syntax highlighter do, but is runtime error - must be KF6 syntax highlighter (?)

      Christian EhrlicherC Offline
      Christian EhrlicherC Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @AndrzejB said in How to migrate from Qt5 to Qt6 ?:

      KF5 syntax highlighter do, but is runtime error - must be KF6 syntax highlighter (?)

      You can not mix Qt5 and Qt6. Do yes you have to wait for KF6

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      0
      • A AndrzejB

        My program works with Qt5 and KF5
        I change it to Qt6
        my CMakeLists.txt

        cmake_minimum_required(VERSION 3.5)
        
        project(EdiQ VERSION 0.1 LANGUAGES CXX)
        
        if(CMAKE_COMPILER_IS_GNUCXX)
            SET(GCC_COVERAGE_COMPILE_FLAGS "-Werror=return-type")
            add_definitions(${GCC_COVERAGE_COMPILE_FLAGS})
        endif()
        
        set(CMAKE_INCLUDE_CURRENT_DIR ON)
        
        set(CMAKE_AUTOUIC ON)
        set(CMAKE_AUTOMOC ON)
        set(CMAKE_AUTORCC ON)
        
        set(CMAKE_CXX_STANDARD 14)
        set(CMAKE_CXX_STANDARD_REQUIRED ON)
        # SingleApplication base class
        set(QAPPLICATION_CLASS QApplication)
        add_subdirectory(SingleApplication)
        
        find_package(QT NAMES Qt6)
        find_package(Qt6 REQUIRED COMPONENTS Widgets)
        
        set(KF_LIB_SYNTAX KF6SyntaxHighlighting)
        
        set(BOTAN_DIR "/usr/include/botan-2")
        IF(NOT EXISTS ${BOTAN_DIR})
            message(FATAL_ERROR "Not found ${BOTAN_DIR}")
        ELSE()
            message(STATUS "Found ${BOTAN_DIR}")
        ENDIF()
        
        set(PROJECT_SOURCES
                main.cpp
                mainwindow.cpp mainwindow.h
                CodeEditor.cpp CodeEditor.h
                IEditorFactory.h IEditor.h
                EditorFactory.cpp EditorFactory.h
                UntitledCounter.cpp UntitledCounter.h
                EdiException.h
                CodeEditorSidebar.cpp CodeEditorSidebar.h
                PlainTextEdit.h
                SearchBar.cpp SearchBar.h
                Popup.cpp Popup.h
                raise.cpp raise.h XRaise.cpp XRaise.h
                een.cpp een.h
                PlainTextEdit.cpp)
        
        qt_add_executable(${PROJECT_NAME}
            MANUAL_FINALIZATION
                res/icons.qrc
            ${PROJECT_SOURCES}
        )
        
        target_include_directories(${PROJECT_NAME} PRIVATE
                ${BOTAN_DIR})
        
        target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Widgets
                SingleApplication::SingleApplication
                ${KF_LIB_SYNTAX}
                X11 botan-2
                )
        
        set_target_properties(${PROJECT_NAME} PROPERTIES
            MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
            MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
            MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
            MACOSX_BUNDLE TRUE
            WIN32_EXECUTABLE TRUE
        )
        
        install(TARGETS ${PROJECT_NAME}
            BUNDLE DESTINATION .
            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
        
        qt_finalize_executable(${PROJECT_NAME})
        

        my SingleApplication/CMakeLists.txt

        cmake_minimum_required(VERSION 3.12.0)
        
        project(SingleApplication LANGUAGES CXX DESCRIPTION "Replacement for QtSingleApplication")
        
        set(CMAKE_AUTOMOC ON)
        
        add_library(${PROJECT_NAME} STATIC
            singleapplication.cpp
            singleapplication_p.cpp
        )
        add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
        
        if(NOT QT_DEFAULT_MAJOR_VERSION)
            set(QT_DEFAULT_MAJOR_VERSION 5 CACHE STRING "Qt version to use (5 or 6), defaults to 5")
        endif()
        
        # Find dependencies
        set(QT_COMPONENTS Core Network)
        set(QT_LIBRARIES Qt6::Core Qt6::Network)
        
        if(QAPPLICATION_CLASS STREQUAL QApplication)
            list(APPEND QT_COMPONENTS Widgets)
            list(APPEND QT_LIBRARIES Qt6::Widgets)
        elseif(QAPPLICATION_CLASS STREQUAL QGuiApplication)
            list(APPEND QT_COMPONENTS Gui)
            list(APPEND QT_LIBRARIES Qt6::Gui)
        else()
            set(QAPPLICATION_CLASS QCoreApplication)
        endif()
        
        find_package(Qt6 COMPONENTS ${QT_COMPONENTS} REQUIRED)
        
        option(SINGLEAPPLICATION_DOCUMENTATION "Generate Doxygen documentation" OFF)
        if(SINGLEAPPLICATION_DOCUMENTATION)
            find_package(Doxygen)
        endif()
        
        target_link_libraries(${PROJECT_NAME} PUBLIC ${QT_LIBRARIES})
        
        if(WIN32)
            target_link_libraries(${PROJECT_NAME} PRIVATE advapi32)
        endif()
        
        target_compile_definitions(${PROJECT_NAME} PUBLIC QAPPLICATION_CLASS=${QAPPLICATION_CLASS})
        target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
        target_compile_definitions(${PROJECT_NAME} PRIVATE
            QT_NO_CAST_TO_ASCII
            QT_NO_CAST_FROM_ASCII
            QT_NO_URL_CAST_FROM_STRING
            QT_NO_CAST_FROM_BYTEARRAY
            QT_USE_QSTRINGBUILDER
            QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
            QT_NO_KEYWORDS
            QT_NO_FOREACH
        )
        
        if(DOXYGEN_FOUND)
            # Doxygen theme
            include(FetchContent)
            FetchContent_Declare(DoxygenAwesome
                GIT_REPOSITORY https://github.com/jothepro/doxygen-awesome-css
                GIT_TAG 4cd62308d825fe0396d2f66ffbab45d0e247724c # 2.0.3
            )
            FetchContent_MakeAvailable(DoxygenAwesome)
            FetchContent_GetProperties(DoxygenAwesome SOURCE_DIR DoxygenAwesome_SOURCE_DIR)
        
            set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md)
            set(DOXYGEN_GENERATE_TREEVIEW YES)
            set(DOXYGEN_HTML_HEADER ${DoxygenAwesome_SOURCE_DIR}/doxygen-custom/header.html)
            set(DOXYGEN_HTML_EXTRA_STYLESHEET ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome.css)
            set(DOXYGEN_HTML_EXTRA_FILES
                ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome-fragment-copy-button.js
                ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome-paragraph-link.js
                ${DoxygenAwesome_SOURCE_DIR}/doxygen-awesome-darkmode-toggle.js
            )
        
            doxygen_add_docs(${PROJECT_NAME}Documentation
                singleapplication.h
                CHANGELOG.md
                Windows.md
                README.md
            )
        endif()
        

        I have installed

        sudo apt install qt6-base-dev
        

        libqt6opengl6-dev is already installed:

        $ aptitude search qt | grep opengl | grep 6
        p  libqt5opengl5:i386 - Qt 5 OpenGL module
        v  libqt5opengl5-desktop-dev:i386 - 
        p  libqt5opengl5-dev:i386 - Qt 5 OpenGL library development files
        i A libqt6opengl6 - Qt 6 OpenGL module
        i A libqt6opengl6-dev - Qt 6 OpenGL library development files
        i A libqt6openglwidgets6 - Qt 6 OpenGL widgets module
        p  python3-pyqt5.qtopengl:i386 - Python 3 bindings for Qt5's OpenGL module
        

        and libqt6gui6:

        $ aptitude search qt | grep gui | grep 6
        p  cmake-qt-gui:i386 - Qt based user interface for CMake (cmake-gui)
        p  libqt5gui5:i386 - Qt 5 GUI module
        i A libqt6gui6 - Qt 6 GUI module
        p  linguist-qt6 - Qt 6 Linguist
        

        but are errors:

        CMake Warning at /home/andrzej/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/cmake/linux/x64/share/cmake-3.26/Modules/CMakeFindDependencyMacro.cmake:76 (find_package):
          Found package configuration file:
        
            /usr/lib/x86_64-linux-gnu/cmake/Qt6Gui/Qt6GuiConfig.cmake
        
          but it set Qt6Gui_FOUND to FALSE so package "Qt6Gui" is considered to be
          NOT FOUND.  Reason given by package:
        
          Qt6Gui could not be found because dependency WrapOpenGL could not be found.
        
        Call Stack (most recent call first):
          /usr/lib/x86_64-linux-gnu/cmake/Qt6/QtPublicDependencyHelpers.cmake:14 (find_dependency)
          /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsDependencies.cmake:96 (_qt_internal_find_dependencies)
          /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake:50 (include)
          /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake:219 (find_package)
          SingleApplication/CMakeLists.txt:31 (find_package)
        
        
        CMake Warning at /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake:219 (find_package):
          Found package configuration file:
        
            /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake
        
          but it set Qt6Widgets_FOUND to FALSE so package "Qt6Widgets" is considered
          to be NOT FOUND.  Reason given by package:
        
          Qt6Widgets could not be found because dependency Qt6Gui could not be found.
        
        Call Stack (most recent call first):
          SingleApplication/CMakeLists.txt:31 (find_package)
        
        
        CMake Error at SingleApplication/CMakeLists.txt:31 (find_package):
          Found package configuration file:
        
            /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake
        
          but it set Qt6_FOUND to FALSE so package "Qt6" is considered to be NOT
          FOUND.  Reason given by package:
        
          Failed to find Qt component "Widgets".
        
          Expected Config file at
          "/usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake" exists
        

        Previously I only has been using Qt5, but I want move to Qt6.
        KF5 also works with Qt6 since not packaged KF6?

        Partial Solution:

        sudo apt install libglvnd-dev
        

        helps to satisfy cmake, also KF5 syntax highlighter do, but is runtime error - must be KF6 syntax highlighter (?)

        JoeCFDJ Offline
        JoeCFDJ Offline
        JoeCFD
        wrote on last edited by
        #3

        @AndrzejB said in How to migrate from Qt5 to Qt6 ?:

        set(CMAKE_CXX_STANDARD 14)

        set(CMAKE_CXX_STANDARD 17)

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved