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
Forum Updated to NodeBB v4.3 + New Features

Copying .dlls into target directory

Scheduled Pinned Locked Moved Unsolved General and Desktop
43 Posts 7 Posters 28.4k 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
    #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
                                    • VRoninV Offline
                                      VRoninV Offline
                                      VRonin
                                      wrote on last edited by VRonin
                                      #35

                                      It's probably one of those lovely windows gotchas, I think it does not like the dot in 5.7, try adding quotes

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

                                      and make sure you rerun qmake!

                                      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                                      ~Napoleon Bonaparte

                                      On a crusade to banish setIndexWidget() from the holy land of Qt

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

                                        Hi, Vronin -

                                        This is somewhat embarrassing. I tried your suggestion, and it worked. I looked at the compiler output and actually saw the xcopy command, and the file did copy.

                                        Unfortunately, it was copying to:

                                        C:\Users\mzimmers\build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug

                                        instead of to:

                                        C:\Users\mzimmers\build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug\debug

                                        So, I went in and fiddled with it, to no avail. I tried to put it back so it would at least re-copy, and...I can't make it work again!!

                                        I'm still encouraged, because it shows that the INSTALLS part of MinGW make does work. It's just a matter of getting the syntax in the .pro file correct.

                                        I'm trying to understand the libs_to_copy construct that I copied from somewhere else. This doesn't seem to be an ordinary qmake variable, and I can't get it to display using message(). Can you possibly point me to an explanation of it?

                                        Thanks a lot...I do think we're getting close.

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

                                          Found it!

                                          The problem was the trailing backslash in the definition of:

                                          libs_to_copy.path = "C:\Users\mzimmers\Wideband\Peninsula\build-storefile_client-Desktop_Qt_5_7_0_MinGW_32bit-Debug\"
                                          

                                          This occurs whether or not I enclose the path in double quotes. Seems like a bug to me...anyone disagree?

                                          There's also the issue of why this line:

                                          libs_to_copy.path = $$(OUT_PWD)
                                          

                                          results in an error message ":-1: warning: libs_to_copy.path is not defined: install target not created."

                                          But, at least I've solved the problem that prompted me to start this thread.

                                          THANK YOU TO EVERYONE WHO PARTICIPATED IN THIS.

                                          kshegunovK 1 Reply Last reply
                                          2

                                          • Login

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