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. Copying .dlls into target directory
Qt 6.11 is out! See what's new in the release blog

Copying .dlls into target directory

Scheduled Pinned Locked Moved Unsolved General and Desktop
43 Posts 7 Posters 43.7k Views 4 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.
  • mzimmersM Offline
    mzimmersM Offline
    mzimmers
    wrote on last edited by
    #15

    Now using:

    C:\Qt\5.7\mingw53_32\bin
    

    Same results.

    1 Reply Last reply
    0
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by
      #16

      well I was under the impression that make install was a unix thing as doc mentioned but
      then i read that mingw-make does have "install". I have however never tried it.

      But the plugandpaint example has

      target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint
      INSTALLS += target
      which maps to
      C:/Qt/Examples/Qt-5.7/widgets/tools/plugandpaint
      But nothing is copied there so Im not sure it does work.

      kshegunovK 1 Reply Last reply
      0
      • mrjjM mrjj

        well I was under the impression that make install was a unix thing as doc mentioned but
        then i read that mingw-make does have "install". I have however never tried it.

        But the plugandpaint example has

        target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint
        INSTALLS += target
        which maps to
        C:/Qt/Examples/Qt-5.7/widgets/tools/plugandpaint
        But nothing is copied there so Im not sure it does work.

        kshegunovK Offline
        kshegunovK Offline
        kshegunov
        Moderators
        wrote on last edited by
        #17

        @mrjj said in copying .dlls into target directory:

        well I was under the impression that make install was a unix thing as doc mentioned but

        No, it's a make thing. Any self-respecting make implementation (including MS's nmake) should provide the install target out of the box. :)

        But the plugandpaint example has

        Well, how did you install? Did you call make install (or equivalent) from the Qt source's base path? If not, you've erred, because there's a chain of pro files (and mkspecs and other goodies that get included and ultimately the QT_INSTALL_EXAMPLES is set for you). But anyway, that's another matter altogether.

        @mzimmers

        I suggest you run qmake manually with -d or -d -d to get some debug info back. It is possible that the qmake's makefile generator doesn't respect the INSTALLS variable (although I see no reason it shouldn't).

        Kind regards.

        Read and abide by the Qt Code of Conduct

        1 Reply Last reply
        2
        • mzimmersM Offline
          mzimmersM Offline
          mzimmers
          wrote on last edited by
          #18

          @kshegunov - thank you for the suggestion. I tried this and got ~6700 error messages; I'm not sure I did it correctly.

          I do have another question: my build steps are to run make first, then qmake. If qmake is a "meta-make" tool, shouldn't the order be 1) qmake and 2) make?

          Thank you.

          jsulmJ 1 Reply Last reply
          0
          • mzimmersM mzimmers

            @kshegunov - thank you for the suggestion. I tried this and got ~6700 error messages; I'm not sure I did it correctly.

            I do have another question: my build steps are to run make first, then qmake. If qmake is a "meta-make" tool, shouldn't the order be 1) qmake and 2) make?

            Thank you.

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

            @mzimmers Yes qmake should be the first one

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

            1 Reply Last reply
            2
            • mzimmersM Offline
              mzimmersM Offline
              mzimmers
              wrote on last edited by kshegunov
              #20

              Well, somehow they got switched (I probably fat-fingered it). I put them in the correct order (qmake, make, make install) and still it doesn't copy the files. Here's the compiler output:

              08:42:17: Running steps for project storefile_client...
              08:42:17: Configuration unchanged, skipping qmake step.
              08:42:17: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" 
              C:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug
              mingw32-make[1]: Entering directory 'C:/Users/mzimmers/Wideband/Peninsula/build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug'
              g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -I..\storefile_client -I. -I..\ARM\inc -IC:\Qt\5.7\mingw53_32\mkspecs\win32-g++  -o debug\storefile_client.o ..\storefile_client\storefile_client.cpp
              g++ -Wl,-subsystem,console -mthreads -o debug\storefile.exe debug/storefile_client.o  "C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86\ws2_32.lib" 
              mingw32-make[1]: Leaving directory 'C:/Users/mzimmers/Wideband/Peninsula/build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug'
              08:42:18: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited normally.
              08:42:18: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" install
              C:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug install
              mingw32-make[1]: Entering directory 'C:/Users/mzimmers/Wideband/Peninsula/build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug'
              **mingw32-make[1]: Nothing to be done for 'install'.**
              mingw32-make[1]: Leaving directory 'C:/Users/mzimmers/Wideband/Peninsula/build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug'
              08:42:19: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited normally.
              08:42:19: Elapsed time: 00:02.
              

              To my layman eyes, it's looking more like the make that comes with mingw doesn't honor installs?

              kshegunovK 1 Reply Last reply
              0
              • mzimmersM mzimmers

                Well, somehow they got switched (I probably fat-fingered it). I put them in the correct order (qmake, make, make install) and still it doesn't copy the files. Here's the compiler output:

                08:42:17: Running steps for project storefile_client...
                08:42:17: Configuration unchanged, skipping qmake step.
                08:42:17: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" 
                C:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug
                mingw32-make[1]: Entering directory 'C:/Users/mzimmers/Wideband/Peninsula/build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug'
                g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -I..\storefile_client -I. -I..\ARM\inc -IC:\Qt\5.7\mingw53_32\mkspecs\win32-g++  -o debug\storefile_client.o ..\storefile_client\storefile_client.cpp
                g++ -Wl,-subsystem,console -mthreads -o debug\storefile.exe debug/storefile_client.o  "C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86\ws2_32.lib" 
                mingw32-make[1]: Leaving directory 'C:/Users/mzimmers/Wideband/Peninsula/build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug'
                08:42:18: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited normally.
                08:42:18: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" install
                C:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug install
                mingw32-make[1]: Entering directory 'C:/Users/mzimmers/Wideband/Peninsula/build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug'
                **mingw32-make[1]: Nothing to be done for 'install'.**
                mingw32-make[1]: Leaving directory 'C:/Users/mzimmers/Wideband/Peninsula/build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug'
                08:42:19: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited normally.
                08:42:19: Elapsed time: 00:02.
                

                To my layman eyes, it's looking more like the make that comes with mingw doesn't honor installs?

                kshegunovK Offline
                kshegunovK Offline
                kshegunov
                Moderators
                wrote on last edited by
                #21

                Honestly, I have no idea. Could you attach the make file and the pro you're currently using?

                Read and abide by the Qt Code of Conduct

                1 Reply Last reply
                0
                • mzimmersM Offline
                  mzimmersM Offline
                  mzimmers
                  wrote on last edited by kshegunov
                  #22

                  @kshegunov : I don't know how to attach files, so I uploaded them to here.

                  You should be able to view and/or download from there. If not, please let me know.

                  Thanks...

                  kshegunovK 1 Reply Last reply
                  0
                  • mzimmersM mzimmers

                    @kshegunov : I don't know how to attach files, so I uploaded them to here.

                    You should be able to view and/or download from there. If not, please let me know.

                    Thanks...

                    kshegunovK Offline
                    kshegunovK Offline
                    kshegunov
                    Moderators
                    wrote on last edited by
                    #23

                    I don't know how to attach files

                    That's what I meant - upload and post the link.

                    From what I can see in the makefile your install target is empty (FORCE goes to the end):

                    install:  FORCE
                    

                    And there's something suspicious about the .pro, you've commented INSTALLS += libs_to_copy and used INSTALLS += C:\Qt\5.7\mingw53_32\bin\libgcc_s_dw2-1.dll instead.

                    I suggest setting a hard path (not through a var) for the libs_to_copy contents and trying with INSTALLS += libs_to_copy. After modifying the file, don't forget to run qmake and then make, make install.

                    Read and abide by the Qt Code of Conduct

                    1 Reply Last reply
                    0
                    • mzimmersM Offline
                      mzimmersM Offline
                      mzimmers
                      wrote on last edited by mzimmers
                      #24

                      I tried this:

                      libs_to_copy = "C:/Qt/5.7/mingw53_32/bin/libgcc_s_dw2-1.dll"
                      INSTALLS += libs_to_copy

                      and I get this error:

                      :-1: warning: libs_to_copy.path is not defined: install target not created

                      When I do this:
                      libs_to_copy.files = $$(QMAKE_LIBDIR_QT)/libgcc_s_dw2-1.dll
                      libs_to_copy.path = $$(OUT_PWD)/$$(OUTDIR)
                      INSTALLS += libs_to_copy

                      I don't get the error, but the file doesn't copy.

                      kshegunovK 1 Reply Last reply
                      0
                      • mzimmersM mzimmers

                        I tried this:

                        libs_to_copy = "C:/Qt/5.7/mingw53_32/bin/libgcc_s_dw2-1.dll"
                        INSTALLS += libs_to_copy

                        and I get this error:

                        :-1: warning: libs_to_copy.path is not defined: install target not created

                        When I do this:
                        libs_to_copy.files = $$(QMAKE_LIBDIR_QT)/libgcc_s_dw2-1.dll
                        libs_to_copy.path = $$(OUT_PWD)/$$(OUTDIR)
                        INSTALLS += libs_to_copy

                        I don't get the error, but the file doesn't copy.

                        kshegunovK Offline
                        kshegunovK Offline
                        kshegunov
                        Moderators
                        wrote on last edited by
                        #25

                        @mzimmers said in Copying .dlls into target directory:

                        libs_to_copy.files = $$(QMAKE_LIBDIR_QT)/libgcc_s_dw2-1.dll
                        libs_to_copy.path = $$(OUT_PWD)/$$(OUTDIR)
                        INSTALLS += libs_to_copy
                        

                        I don't get the error, but the file doesn't copy.

                        What about this:

                        libs_to_copy.files = C:/Qt/5.7/mingw53_32/bin/libgcc_s_dw2-1.dll
                        libs_to_copy.path = $$(OUT_PWD)
                        
                        INSTALLS += libs_to_copy
                        

                        ?

                        Alternatively you could try to add an additional target.

                        Read and abide by the Qt Code of Conduct

                        mzimmersM 1 Reply Last reply
                        0
                        • kshegunovK kshegunov

                          @mzimmers said in Copying .dlls into target directory:

                          libs_to_copy.files = $$(QMAKE_LIBDIR_QT)/libgcc_s_dw2-1.dll
                          libs_to_copy.path = $$(OUT_PWD)/$$(OUTDIR)
                          INSTALLS += libs_to_copy
                          

                          I don't get the error, but the file doesn't copy.

                          What about this:

                          libs_to_copy.files = C:/Qt/5.7/mingw53_32/bin/libgcc_s_dw2-1.dll
                          libs_to_copy.path = $$(OUT_PWD)
                          
                          INSTALLS += libs_to_copy
                          

                          ?

                          Alternatively you could try to add an additional target.

                          mzimmersM Offline
                          mzimmersM Offline
                          mzimmers
                          wrote on last edited by
                          #26

                          @kshegunov said in Copying .dlls into target directory:

                          @mzimmers said in Copying .dlls into target directory:

                          libs_to_copy.files = $$(QMAKE_LIBDIR_QT)/libgcc_s_dw2-1.dll
                          libs_to_copy.path = $$(OUT_PWD)/$$(OUTDIR)
                          INSTALLS += libs_to_copy
                          

                          I don't get the error, but the file doesn't copy.

                          What about this:

                          libs_to_copy.files = C:/Qt/5.7/mingw53_32/bin/libgcc_s_dw2-1.dll
                          libs_to_copy.path = $$(OUT_PWD)
                          
                          INSTALLS += libs_to_copy
                          

                          ?

                          That gives me this error:

                          :-1: warning: libs_to_copy.path is not defined: install target not created

                          Alternatively you could try to add an additional target.

                          I may have to fall back to this, if it turns out that the INSTALLS directive doesn't work.

                          Thanks...

                          kshegunovK 1 Reply Last reply
                          0
                          • BuckwheatB Offline
                            BuckwheatB Offline
                            Buckwheat
                            wrote on last edited by mrjj
                            #27

                            @mzimmers ... Your solution for copying looks pretty good. I am going to remember it. You mentioned modifying DESTDIR. I actually prefer doing that as well as setting the MOC_DIR and OBJECTS_DIR to make the build where I know things are located. It also makes it clean. When doing this, I turn off the shadow build into that horrendously long path. My structure is typically as follows (only release config):

                            <root>
                               bin
                                  plugins
                                  ,,,
                               build
                                  <subproject>
                                     release
                                        moc
                                        obj
                                  ...
                                  <main app>
                                     release
                                        moc
                                        obj
                               lib
                                  release
                            

                            As you can see it is relatively clean and you know where things are built. I use MSYS2 for development because I can get 32 and 64 bit development. QtCreator 4.1.x for IDE.

                            I copy my 3rd party DLLs (except MSYS) into bin for testing. Typically I have only needed a few MSYS dlls so it is not too hateful.

                            [edit: code tags added: mrjj]

                            Dave Fileccia

                            BuckwheatB 1 Reply Last reply
                            0
                            • BuckwheatB Buckwheat

                              @mzimmers ... Your solution for copying looks pretty good. I am going to remember it. You mentioned modifying DESTDIR. I actually prefer doing that as well as setting the MOC_DIR and OBJECTS_DIR to make the build where I know things are located. It also makes it clean. When doing this, I turn off the shadow build into that horrendously long path. My structure is typically as follows (only release config):

                              <root>
                                 bin
                                    plugins
                                    ,,,
                                 build
                                    <subproject>
                                       release
                                          moc
                                          obj
                                    ...
                                    <main app>
                                       release
                                          moc
                                          obj
                                 lib
                                    release
                              

                              As you can see it is relatively clean and you know where things are built. I use MSYS2 for development because I can get 32 and 64 bit development. QtCreator 4.1.x for IDE.

                              I copy my 3rd party DLLs (except MSYS) into bin for testing. Typically I have only needed a few MSYS dlls so it is not too hateful.

                              [edit: code tags added: mrjj]

                              BuckwheatB Offline
                              BuckwheatB Offline
                              Buckwheat
                              wrote on last edited by
                              #28

                              @Buckwheat I wish I knew how to make indents in the forum ;D

                              Dave Fileccia

                              mrjjM 1 Reply Last reply
                              0
                              • BuckwheatB Buckwheat

                                @Buckwheat I wish I knew how to make indents in the forum ;D

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

                                @Buckwheat
                                use the code tag ``` ( before and after)
                                and it wont eat indentation :)

                                BuckwheatB 1 Reply Last reply
                                0
                                • mrjjM mrjj

                                  @Buckwheat
                                  use the code tag ``` ( before and after)
                                  and it wont eat indentation :)

                                  BuckwheatB Offline
                                  BuckwheatB Offline
                                  Buckwheat
                                  wrote on last edited by
                                  #30

                                  @mrjj Thanks!

                                  Dave Fileccia

                                  1 Reply Last reply
                                  0
                                  • mzimmersM mzimmers

                                    @kshegunov said in Copying .dlls into target directory:

                                    @mzimmers said in Copying .dlls into target directory:

                                    libs_to_copy.files = $$(QMAKE_LIBDIR_QT)/libgcc_s_dw2-1.dll
                                    libs_to_copy.path = $$(OUT_PWD)/$$(OUTDIR)
                                    INSTALLS += libs_to_copy
                                    

                                    I don't get the error, but the file doesn't copy.

                                    What about this:

                                    libs_to_copy.files = C:/Qt/5.7/mingw53_32/bin/libgcc_s_dw2-1.dll
                                    libs_to_copy.path = $$(OUT_PWD)
                                    
                                    INSTALLS += libs_to_copy
                                    

                                    ?

                                    That gives me this error:

                                    :-1: warning: libs_to_copy.path is not defined: install target not created

                                    Alternatively you could try to add an additional target.

                                    I may have to fall back to this, if it turns out that the INSTALLS directive doesn't work.

                                    Thanks...

                                    kshegunovK Offline
                                    kshegunovK Offline
                                    kshegunov
                                    Moderators
                                    wrote on last edited by kshegunov
                                    #31

                                    @mzimmers said in Copying .dlls into target directory:

                                    That gives me this error:
                                    :-1: warning: libs_to_copy.path is not defined: install target not created

                                    Sorry, I might've mislead you. Try with:

                                    libs_to_copy.path = $$OUT_PWD
                                    

                                    Notice the lack of parenthesis. It's a bit cumbersome like this, but I don't have a windows machine on hand to test. If you continue to get an error run qmake with -d and attach the output, e.g.

                                    qmake -d myproject.pro
                                    

                                    Read and abide by the Qt Code of Conduct

                                    mzimmersM 1 Reply Last reply
                                    1
                                    • kshegunovK kshegunov

                                      @mzimmers said in Copying .dlls into target directory:

                                      That gives me this error:
                                      :-1: warning: libs_to_copy.path is not defined: install target not created

                                      Sorry, I might've mislead you. Try with:

                                      libs_to_copy.path = $$OUT_PWD
                                      

                                      Notice the lack of parenthesis. It's a bit cumbersome like this, but I don't have a windows machine on hand to test. If you continue to get an error run qmake with -d and attach the output, e.g.

                                      qmake -d myproject.pro
                                      
                                      mzimmersM Offline
                                      mzimmersM Offline
                                      mzimmers
                                      wrote on last edited by
                                      #32

                                      @kshegunov said in Copying .dlls into target directory:

                                      Notice the lack of parenthesis. It's a bit cumbersome like this, but I don't have a windows machine on hand to test. If you continue to get an error run qmake with -d and attach the output, e.g.
                                      qmake -d myproject.pro

                                      Here's the output:

                                      link text

                                      LOTS of stuff there, and I don't understand most of it.

                                      kshegunovK 1 Reply Last reply
                                      0
                                      • mzimmersM mzimmers

                                        @kshegunov said in Copying .dlls into target directory:

                                        Notice the lack of parenthesis. It's a bit cumbersome like this, but I don't have a windows machine on hand to test. If you continue to get an error run qmake with -d and attach the output, e.g.
                                        qmake -d myproject.pro

                                        Here's the output:

                                        link text

                                        LOTS of stuff there, and I don't understand most of it.

                                        kshegunovK Offline
                                        kshegunovK Offline
                                        kshegunov
                                        Moderators
                                        wrote on last edited by
                                        #33

                                        @mzimmers said in Copying .dlls into target directory:

                                        and I don't understand most of it.

                                        No one does, perhaps with the exception of the qmake's developers. ;)
                                        Anyway, there seems to be a problem with the paths:

                                        DEBUG 1: C:/Users/mzimmers/Wideband/Peninsula/storefile_client/storefile_client.pro:17: libs_to_copy.files := /libgcc_s_dw2-1.dll
                                        DEBUG 1: C:/Users/mzimmers/Wideband/Peninsula/storefile_client/storefile_client.pro:19: libs_to_copy.path := C:/Users/mzimmers/Wideband/Peninsula/build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug
                                        ...
                                        DEBUG 1: Dependency Directories: ..\storefile_client :: . :: ..\ARM\inc :: C:\Qt\5.7\mingw53_32\mkspecs\win32-g++
                                        DEBUG 1: c:\Users\qt\work\qt\qtbase/qmake/generators/makefile.cpp:321 Failure to find /libgcc_s_dw2-1.dll in vpath ()
                                        DEBUG 1: no definition for install libs_to_copy: install target not created
                                        

                                        See that the dll file's path is truncated for some reason.

                                        Read and abide by the Qt Code of Conduct

                                        1 Reply Last reply
                                        2
                                        • mzimmersM Offline
                                          mzimmersM Offline
                                          mzimmers
                                          wrote on last edited by
                                          #34

                                          Well, look at that...it sure is.

                                          I don't know what to make of that (so to speak). Is it possible we've uncovered a bug?

                                          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