Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. Can't compile with jom in Windows - Makefile has bash syntax in it
Forum Updated to NodeBB v4.3 + New Features

Can't compile with jom in Windows - Makefile has bash syntax in it

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
23 Posts 6 Posters 5.5k Views 3 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.
  • M morphine

    Thanks for the replies, everyone. In the meantime, I've tested MSVC + jom to compile, and that did in fact work (I was originally trying to use MinGW)

    However, even though I'm not all that much into build processes, it would seem at first sight that the fault of the configure utility for creating a Makefile with bash syntax in it? Or was jom supposed to be able to interpret that anyway?

    jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #11

    @morphine You can use "-j NUMBER" as parameter to use more than one process to build using make:

    make -j 8
    

    https://forum.qt.io/topic/113070/qt-code-of-conduct

    1 Reply Last reply
    0
    • M Offline
      M Offline
      morphine
      wrote on last edited by
      #12

      This is relatively tangential, but is probably of interest to the crowd. For context, I'm using Qt compilation as a CPU benchmark. The configuration I have skips almost everything to keep the build time reasonable (i.e. "-no-dbus -no-open -skip this -skip that, etc etc")

      After some informal tests on my own daily desktop, the build process (configure and make) with jom/MSVC takes around 28 minutes. Using MinGW 7.3 with a "-j 8" takes significantly longer, at around 39 minutes. That's almost a 40% difference. I did double-check that there were no errors and that a subsequent "make install"

      I did verify that ming32-make was actually pulling in multiple jobs at the same time and kept an eye on Task Manager. (I've actually used make -j X before with an older Qt for the sampe exact purpose). From what I can gather, two things are different between jom/make.

      The first one is that "configure" step with jom/MSVC seems to be multi-threaded itself, as it runs significantly faster compared to MinGW. That alone can easily count for a couple minutes' difference.

      Then, the actual compilation with jom just seems to hit the CPU harder overall, for some reason, judging by the time delta and the machines's overall responsiveness while the compile job was running. For the record, Windows reports 100% CPU usage on both instances. I'll be running some tests on a dedicated box and report back.

      aha_1980A 1 Reply Last reply
      0
      • M morphine

        This is relatively tangential, but is probably of interest to the crowd. For context, I'm using Qt compilation as a CPU benchmark. The configuration I have skips almost everything to keep the build time reasonable (i.e. "-no-dbus -no-open -skip this -skip that, etc etc")

        After some informal tests on my own daily desktop, the build process (configure and make) with jom/MSVC takes around 28 minutes. Using MinGW 7.3 with a "-j 8" takes significantly longer, at around 39 minutes. That's almost a 40% difference. I did double-check that there were no errors and that a subsequent "make install"

        I did verify that ming32-make was actually pulling in multiple jobs at the same time and kept an eye on Task Manager. (I've actually used make -j X before with an older Qt for the sampe exact purpose). From what I can gather, two things are different between jom/make.

        The first one is that "configure" step with jom/MSVC seems to be multi-threaded itself, as it runs significantly faster compared to MinGW. That alone can easily count for a couple minutes' difference.

        Then, the actual compilation with jom just seems to hit the CPU harder overall, for some reason, judging by the time delta and the machines's overall responsiveness while the compile job was running. For the record, Windows reports 100% CPU usage on both instances. I'll be running some tests on a dedicated box and report back.

        aha_1980A Offline
        aha_1980A Offline
        aha_1980
        Lifetime Qt Champion
        wrote on last edited by
        #13

        @morphine

        Just in case you wonder: It is long known that MSVC is the fastest compiler for Windows. gcc on Linux is in the same league, probably a bit faster (the Linux file system is really good for tasks like compiling). MinGW, which is gcc on Windows is significantly slower. I don't know how Clang behaves on Windows, but IIRC, some people have great hopes in it.

        Qt has to stay free or it will die.

        JonBJ 1 Reply Last reply
        1
        • aha_1980A aha_1980

          @morphine

          Just in case you wonder: It is long known that MSVC is the fastest compiler for Windows. gcc on Linux is in the same league, probably a bit faster (the Linux file system is really good for tasks like compiling). MinGW, which is gcc on Windows is significantly slower. I don't know how Clang behaves on Windows, but IIRC, some people have great hopes in it.

          JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by
          #14

          @aha_1980
          Very interesting!

          the Linux file system is really good for tasks like compiling

          Excellent! Why?

          aha_1980A 1 Reply Last reply
          0
          • M Offline
            M Offline
            morphine
            wrote on last edited by
            #15

            @aha_1980, that's very useful information, thanks!

            Other than having a benchmark that hits hard, another concern with this is ensuring it scales on many-core CPUs and the like. I'm guessing that'll depend as much on jom as it does on the compiler proper, but I should also probably MSVC to deliver on that front as well.

            K 1 Reply Last reply
            0
            • JonBJ JonB

              @aha_1980
              Very interesting!

              the Linux file system is really good for tasks like compiling

              Excellent! Why?

              aha_1980A Offline
              aha_1980A Offline
              aha_1980
              Lifetime Qt Champion
              wrote on last edited by
              #16

              @JonB

              Probably good caching? I don't really know.

              I also have no experience with Mac, so I cannot compare in this direction.

              Qt has to stay free or it will die.

              1 Reply Last reply
              0
              • M Offline
                M Offline
                morphine
                wrote on last edited by
                #17

                For the record, a while back we (site I work for) actually benchmarked compilation on HDDs vs SSDs. While I'm sure that things have changed in the meantime, we found that for the actual build step, I/O played a very, very minor part.

                mrjjM 1 Reply Last reply
                1
                • M morphine

                  For the record, a while back we (site I work for) actually benchmarked compilation on HDDs vs SSDs. While I'm sure that things have changed in the meantime, we found that for the actual build step, I/O played a very, very minor part.

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by
                  #18

                  @morphine
                  Well using a ramdisk at work when compiling inside virtual machine
                  speed things up a lot. especially the linking part.
                  so while difference between spindisk (newer) and SSD might not
                  do much, upgrading to 6000/6000 MB/s ( ram disk speed)
                  did consistently work faster.
                  Its just a note. didn't really do much testing.

                  JonBJ 1 Reply Last reply
                  1
                  • M Offline
                    M Offline
                    morphine
                    wrote on last edited by
                    #19

                    We did not, in fact, test that scenario. You've piqued my interest, maybe I will at some point :)

                    mrjjM 1 Reply Last reply
                    0
                    • M morphine

                      We did not, in fact, test that scenario. You've piqued my interest, maybe I will at some point :)

                      mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #20

                      @morphine
                      Well building Qt on ramdrive does take lots of ram :)
                      But real test could be fun. to see how much it matters. (for real)
                      for our project is just 20-25 secs. (out of 2 minutes) but
                      without proper testing it could be other factors.

                      1 Reply Last reply
                      0
                      • mrjjM mrjj

                        @morphine
                        Well using a ramdisk at work when compiling inside virtual machine
                        speed things up a lot. especially the linking part.
                        so while difference between spindisk (newer) and SSD might not
                        do much, upgrading to 6000/6000 MB/s ( ram disk speed)
                        did consistently work faster.
                        Its just a note. didn't really do much testing.

                        JonBJ Offline
                        JonBJ Offline
                        JonB
                        wrote on last edited by
                        #21

                        @mrjj

                        Well using a ramdisk at work when compiling inside virtual machine

                        Now what is that "ramdisk" exactly? My Windows hosts Linux in a VirtualBox VM, are you saying I could have some sort of ramdisk in the Linux VM?

                        mrjjM 1 Reply Last reply
                        0
                        • JonBJ JonB

                          @mrjj

                          Well using a ramdisk at work when compiling inside virtual machine

                          Now what is that "ramdisk" exactly? My Windows hosts Linux in a VirtualBox VM, are you saying I could have some sort of ramdisk in the Linux VM?

                          mrjjM Offline
                          mrjjM Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on last edited by
                          #22

                          @JonB
                          well its a block device in ram. like a normal disk.
                          and yes inside the wm.
                          https://www.jamescoyle.net/how-to/943-create-a-ram-disk-in-linux

                          on windows i use
                          Softperfect ram disk.

                          1 Reply Last reply
                          0
                          • M morphine

                            @aha_1980, that's very useful information, thanks!

                            Other than having a benchmark that hits hard, another concern with this is ensuring it scales on many-core CPUs and the like. I'm guessing that'll depend as much on jom as it does on the compiler proper, but I should also probably MSVC to deliver on that front as well.

                            K Offline
                            K Offline
                            koahnig
                            wrote on last edited by koahnig
                            #23

                            @morphine said in Can't compile with jom in Windows - Makefile has bash syntax in it:

                            @aha_1980, that's very useful information, thanks!

                            Other than having a benchmark that hits hard, another concern with this is ensuring it scales on many-core CPUs and the like. I'm guessing that'll depend as much on jom as it does on the compiler proper, but I should also probably MSVC to deliver on that front as well.

                            When using Qt creator you require jom for MSVC for parallel compilation. IIRC it compensates the lack of nmake to do parallel compilations on its own. This is done by the MSVC IDE there.

                            Qt creator and MinGW does allow parallel compilation on windows. You need to use the -j parameter or environment settings. There no need to use jom with MinGW, but you can (see the link I had posted above for CPU comparison).

                            Also RAM disks help to speed up. I place my shadow on the ram disk.
                            There was already a discussion involving @mrjj https://forum.qt.io/topic/80933/qtcreator-shadow-build-directory-structure/19
                            However, I thought that there were some numbers given in comparison.

                            Vote the answer(s) that helped you to solve your issue(s)

                            1 Reply Last reply
                            1

                            • Login

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