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 compile just a specific module from the qt source?
Forum Updated to NodeBB v4.3 + New Features

How to compile just a specific module from the qt source?

Scheduled Pinned Locked Moved Unsolved General and Desktop
12 Posts 5 Posters 2.2k Views 1 Watching
  • 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.
  • R Roberrt

    I have compiled the entire source from qt-everywhere-src-6.4.0, I'm testing some modifications i did in some files.
    How i could compile only the specific module in which I modified the files, instead of everything again?

    I'm compiling on Windows, what i have tried:

    configure.bat -debug -platform win32-msvc -opensource -confirm-license -prefix "D:\Qt\Debug" module-qtwidgets
    

    or do i need to just call:

    configure.bat -debug -platform win32-msvc -opensource -confirm-license -prefix "D:\Qt\Debug"
    

    then when it finish configuring, try to pass the module i need to recompile? I'm confused.

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

    Configure Qt and then go into the subdir you want to have to get recompiled (when you use NMake Makefiles) or simply tell ninja what module it should build (e.g. ninja Widgets) when you use Ninja.

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

    R 1 Reply Last reply
    0
    • Christian EhrlicherC Christian Ehrlicher

      Configure Qt and then go into the subdir you want to have to get recompiled (when you use NMake Makefiles) or simply tell ninja what module it should build (e.g. ninja Widgets) when you use Ninja.

      R Offline
      R Offline
      Roberrt
      wrote on last edited by Roberrt
      #3

      @Christian-Ehrlicher If i modify a single line in any file inside qtbase\src\widgets\kernel i need to recompile the entire widgets module? isn't possible somehow to recompile just the kernel folder?

      Christian EhrlicherC 1 Reply Last reply
      0
      • R Roberrt

        @Christian-Ehrlicher If i modify a single line in any file inside qtbase\src\widgets\kernel i need to recompile the entire widgets module? isn't possible somehow to recompile just the kernel folder?

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

        @Roberrt said in How to compile just a specific module from the qt source?:

        ? isn't possible somehow to recompile just the kernel folder?

        I don't understand your question - every useful build system I'm aware of only re-builds the source files which were modified.

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

        R 1 Reply Last reply
        0
        • Christian EhrlicherC Christian Ehrlicher

          @Roberrt said in How to compile just a specific module from the qt source?:

          ? isn't possible somehow to recompile just the kernel folder?

          I don't understand your question - every useful build system I'm aware of only re-builds the source files which were modified.

          R Offline
          R Offline
          Roberrt
          wrote on last edited by
          #5

          @Christian-Ehrlicher Then im doing something wrong because its recompiling everything instead of just the modified file. I will delete everything and try again.

          1 Reply Last reply
          0
          • R Offline
            R Offline
            Roberrt
            wrote on last edited by Roberrt
            #6

            I have modified a kernel file and when i run

            D:\Qt\qt-everywhere-src-6.4.0>cmake --build . --target Widgets
            ninja: no work to do.
            

            It just say "no work to do" what im missing?

            Christian EhrlicherC 1 Reply Last reply
            0
            • R Roberrt

              I have modified a kernel file and when i run

              D:\Qt\qt-everywhere-src-6.4.0>cmake --build . --target Widgets
              ninja: no work to do.
              

              It just say "no work to do" what im missing?

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

              I would use ninja Widgets but it should be the same. I would guess you did not modify anything inside the source dir for this build directory but somewhere else.

              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
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #8

                Hi,

                The kernel subfolder is not a module in itself. Depending on what you modified there, there will likely be several classes that need to be rebuilt, possibly through several modules.

                That said, if you are only working on the widgets module, you can simply build only qtbase.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • R Offline
                  R Offline
                  Roberrt
                  wrote on last edited by Roberrt
                  #9

                  It worked after calling the configure command again

                  configure.bat -debug -platform win32-msvc -opensource -confirm-license -prefix "D:\Qt\Debug"
                  

                  But now i'm getting tons of compile errors like:

                  @HPEAPEAX@Z)
                  1>moc_MainWindow.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static struct QMetaObject const QMainWindow::staticMetaObject" (__imp_?staticMetaObject@QMainWindow@@2UQMetaObject@@B) referenced in function "public: static struct QMetaObject const * __cdecl QMetaObject::staticMetaObject<&public: static struct QMetaObject const
                  

                  I also tried rebuild solution/clean solution, still getting the errors.
                  I'm getting these errors on all existing projects i have.
                  When i create a new project i get no error.

                  I'm building on vs 2022.

                  JoeCFDJ 1 Reply Last reply
                  0
                  • R Roberrt

                    It worked after calling the configure command again

                    configure.bat -debug -platform win32-msvc -opensource -confirm-license -prefix "D:\Qt\Debug"
                    

                    But now i'm getting tons of compile errors like:

                    @HPEAPEAX@Z)
                    1>moc_MainWindow.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static struct QMetaObject const QMainWindow::staticMetaObject" (__imp_?staticMetaObject@QMainWindow@@2UQMetaObject@@B) referenced in function "public: static struct QMetaObject const * __cdecl QMetaObject::staticMetaObject<&public: static struct QMetaObject const
                    

                    I also tried rebuild solution/clean solution, still getting the errors.
                    I'm getting these errors on all existing projects i have.
                    When i create a new project i get no error.

                    I'm building on vs 2022.

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

                    @Roberrt
                    http://bin.ceicer.com/qt/Windows/Qt5.15.9_msvc_shared_64-bit/readme.txt
                    https://forum.qt.io/topic/144231/qt5-15-9-linux-and-windows-compiled-source-code?_=1681152916124

                    R 1 Reply Last reply
                    0
                    • L Offline
                      L Offline
                      Lightshadown
                      wrote on last edited by
                      #11

                      Hi i got a similar situation but im compiling on rpi3, i did follow this tutorial tutorial rpi3 Qt, its posible to just compile and add a platform instead of recompile all the framework?, forgot to add -eglfs meabe something like
                      ./configure -eglfs ? is that posible or do i need to start all over from scracht, last time took me like 30h just to compile

                      my compile command was as follow

                      ../qt-everywhere-src-5.12.10/configure -platform linux-rpi-g++ \
                      -v \
                      -no-gtk \
                      -opensource -confirm-license -release \
                      -reduce-exports \
                      -force-pkg-config \
                      -nomake examples -no-compile-examples \
                      -skip qtwayland \
                      -skip qtwebengine \
                      -no-feature-geoservices_mapboxgl \
                      -qt-pcre \
                      -no-pch \
                      -ssl \
                      -evdev \
                      -system-freetype \
                      -fontconfig \
                      -glib \
                      -prefix /opt/Qt/5.12.10 \
                      -qpa eglfs
                      
                      1 Reply Last reply
                      0
                      • JoeCFDJ JoeCFD

                        @Roberrt
                        http://bin.ceicer.com/qt/Windows/Qt5.15.9_msvc_shared_64-bit/readme.txt
                        https://forum.qt.io/topic/144231/qt5-15-9-linux-and-windows-compiled-source-code?_=1681152916124

                        R Offline
                        R Offline
                        Roberrt
                        wrote on last edited by Roberrt
                        #12

                        I found the cause of the errors, i compiled the new source using the x86 Native Tools Command Prompt for VS 2022 instead of the x64, it end up generating x32 exe.

                        Whenever I modify a source file and call ninja Widgets to it get compiled, it get compiled quickly < 1min
                        afterward i'm calling npm --install . to get the recompiled file copied from the qt-everywhere-src-6.4.0 folder to the D:\Qt\Debug

                        But this task is taking a lot of time, it is iterating through thousand files checking which are not updated:

                        -- Up-to-date: D:/Qt/Debug/include/QtDesigner/6.4.0/QtDesigner/private/qdesigner_formeditorcommand_p.h
                        -- Up-to-date: D:/Qt/Debug/include/QtDesigner/6.4.0/QtDesigner/private/qdesigner_formwindowcommand_p.h
                        -- Up-to-date: D:/Qt/Debug/include/QtDesigner/6.4.0/QtDesigner/private/qdesigner_formwindowmanager_p.h
                        -- Up-to-date: D:/Qt/Debug/include/QtDesigner/6.4.0/QtDesigner/private/qdesigner_introspection_p.h
                        -- Up-to-date: D:/Qt/Debug/include/QtDesigner/6.4.0/QtDesigner/private/qdesigner_membersheet_p.h
                        -- Up-to-date: D:/Qt/Debug/include/QtDesigner/6.4.0/QtDesigner/private/qdesigner_menu_p.h
                        ...
                        

                        Am i doing this correctly?
                        There's another way to copy directly the file that got modified/recompiled instead of checking one by one which the command --install .?

                        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