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.
  • mrjjM mrjj

    Hi
    Im wondering if mixing

    / and  \ is ok?
     C:/Qt/5.7/mingw53_32/bin\libgcc_s_dw2-1.dll. 
                             ^
    
    mzimmersM Offline
    mzimmersM Offline
    mzimmers
    wrote on last edited by
    #11

    @mrjj said in copying .dlls into target directory:

    Hi
    Im wondering if mixing

    / and  \ is ok?
     C:/Qt/5.7/mingw53_32/bin\libgcc_s_dw2-1.dll. 
                             ^
    

    Good question. In my hard-coded tests, I tried it with all "/" and all "" and get the same error, though.

    Does qmake have some kind of echo function where I can output the value of variables?

    Thanks.

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

      Ok, was just a thought.
      You can outout with

      message($$VAR)

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

        Well, I'm still stuck on this. The problem appears to be in this area:

        DESTDIR = $$(OUT_PWD)
        extra_libs.files = MY_LIB_FILES
        extra_libs.path = $$(DESTDIR)
        
        ## Tell qmake to add the moving of them to the 'install' target
        INSTALLS += extra_libs
        

        I get this error (warning):

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

        OUT_PWD appears to be OK. I don't really know what I'm doing with the variable "extra_lib" as that was just yanked from an example above. I assumed the .files and .path were properties of the variable, but now I'm questioning what I'm doing.

        Anyone able to shed some light onto this?

        Thanks.

        UPDATE:

        I just clicked on the "see more replies" part of the answer I was trying to copy -- someone claims that INSTALLS doesn't work on Windows. Can anyone confirm or deny this? I don't find anything about this limitation in the docs. I tried invoking the make from the command line, and got this:

        C:\Qt\Tools\mingw530_32\bin>.\mingw32-make.exe install
        mingw32-make: *** No rule to make target 'install'.  Stop.
        

        So I guess it is true...?

        1 Reply Last reply
        0
        • JKSHJ Offline
          JKSHJ Offline
          JKSH
          Moderators
          wrote on last edited by
          #14

          Try using hard-coded paths first and see if you can get that to work. After you succeed, replace the hard-coded paths with variables.

          (I haven't used INSTALLS before and don't currently have access to a computer to try it myself)

          Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

          1 Reply Last reply
          0
          • 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

                                          • Login

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