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

Copy dir for build dir

Scheduled Pinned Locked Moved General and Desktop
15 Posts 3 Posters 10.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    Exotic_Devel
    wrote on last edited by
    #1

    I am needing to copy a directory to the build directory, I found a solution but it is not meeting my need:
    "Solution":http://dragly.org/2013/11/05/copying-data-files-to-the-build-directory-when-working-with-qmake/

    First I do not understand why so many lines of code just to copy a file to the build-dir.
    According to my need is copy a folder and all its contents to the build-dir and not just a loose file as shown in the solution.

    Here is the picture of how this divided my project:

    !http://i60.tinypic.com/103u0rc.png(MyPro)!

    need to copy the uitest folder and all its contents to the same directory where the executable is created test.

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi,

      Do you really need these files there or is it just to make it easier for your tests to access them ?

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

      1 Reply Last reply
      0
      • S Offline
        S Offline
        Salvatello
        wrote on last edited by
        #3

        if you want to copy the folder and its contents need to copy file to file.
        You must first create the parent folder ( uitest ) .
        Then the sons of uitest scrolling you have to create the folder by folder and copy the files in order .
        Is that clear?

        1 Reply Last reply
        0
        • E Offline
          E Offline
          Exotic_Devel
          wrote on last edited by
          #4

          SGaist,
          Need for both reasons, yes, is for easier access, but also need to copy another folder where are the ui files for final use.

          Salvatello,
          I found some information on how to copy files but not how to create dirs, you could set an example?

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #5

            If you generated the test with Qt Creator you should have a line like
            @DEFINES += SRCDIR=\\"$$PWD/\\"@

            So you can use SRCDIR to access the files in your sources from your test

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

            1 Reply Last reply
            0
            • S Offline
              S Offline
              Salvatello
              wrote on last edited by
              #6

              @void Main::copyPath(QString src, QString dst)
              {
              QDir dir(src);
              if (! dir.exists())
              return;
              foreach (QString d, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
              QString dst_path = dst + QDir::separator() + d;
              dir.mkpath(dst_path);
              copyPath(src+ QDir::separator() + d, dst_path);
              }

              foreach (QString f, dir.entryList(QDir::Files)) {
                  QFile::copy(src + QDir::separator() + f, dst + QDir::separator() + f);
              }
              

              }@
              src is directory starting
              dst is directory arrival

              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #7

                @ Salvatello the question is not about doing it from an application, it's about doing in from a post-build step

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

                1 Reply Last reply
                0
                • E Offline
                  E Offline
                  Exotic_Devel
                  wrote on last edited by
                  #8

                  No it does not. And I did not create the tests with QtCreator. Below is the content of tests_pro.

                  @QT += testlib sql widgets uitools

                  HEADERS +=
                  testdataaccess.hpp
                  testconnecdialog.hpp
                  testdynamicwidgets.hpp

                  SOURCES +=
                  testdataaccess.cpp
                  main.cpp
                  testconnecdialog.cpp
                  testdynamicwidgets.cpp

                  OTHER_FILES += uitests/*

                  #lib dataaccess
                  win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../dataaccess/release/ -ldataaccess
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../dataaccess/debug/ -ldataaccess
                  else:unix: LIBS += -L$$OUT_PWD/../dataaccess/ -ldataaccess

                  INCLUDEPATH += $$PWD/../dataaccess
                  DEPENDPATH += $$PWD/../dataaccess

                  win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../dataaccess/release/libdataaccess.a
                  else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../dataaccess/debug/libdataaccess.a
                  else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../dataaccess/release/dataaccess.lib
                  else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../dataaccess/debug/dataaccess.lib
                  else:unix: PRE_TARGETDEPS += $$OUT_PWD/../dataaccess/libdataaccess.a

                  #lib GUI
                  win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../gui/release/ -lgui
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../gui/debug/ -lgui
                  else:unix: LIBS += -L$$OUT_PWD/../gui/ -lgui

                  INCLUDEPATH += $$PWD/../gui
                  DEPENDPATH += $$PWD/../gui

                  win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../gui/release/libgui.a
                  else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../gui/debug/libgui.a
                  else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../gui/release/gui.lib
                  else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../gui/debug/gui.lib
                  else:unix: PRE_TARGETDEPS += $$OUT_PWD/../gui/libgui.a@

                  In pure makefile, I do this way:

                  @mkdir -p ui
                  cp -i uitests/*.ui ui/@

                  simple

                  I do not know how to do the same thing with qmake script.

                  [quote author="SGaist" date="1413316037"]If you generated the test with Qt Creator you should have a line like
                  @DEFINES += SRCDIR=\\"$$PWD/\\"@

                  So you can use SRCDIR to access the files in your sources from your test[/quote]

                  1 Reply Last reply
                  0
                  • E Offline
                    E Offline
                    Exotic_Devel
                    wrote on last edited by
                    #9

                    Ok, basing myself by the "solution":http://dragly.org/2013/11/05/copying-data-files-to-the-build-directory-when-working-with-qmake/, I mounted the script of copies that I needed.

                    @createdir.commands = $(MKDIR) $$OUT_PWD/uitests
                    copyfiles.commands = $(COPY) $$PWD/$$OTHER_FILES $$OUT_PWD/uitests
                    first.depends = $(first) createdir copyfiles
                    export(first.depends)
                    export(createdir.commands)
                    export(copyfiles.commands)
                    QMAKE_EXTRA_TARGETS += first createdir copyfiles
                    @

                    However, the solution does not explain a few things:

                    'depends' and 'commands' are required? Are they for?

                    1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #10

                      IIRC, something like

                      @
                      QMAKE_POST_LINK += $$quote($(COPY_DIR) $$PWD/uitests PATH_TO_BUILDIR/ui)
                      @

                      should do the job

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

                      1 Reply Last reply
                      0
                      • E Offline
                        E Offline
                        Exotic_Devel
                        wrote on last edited by
                        #11

                        Perfect SGaist! More compact

                        [quote author="SGaist" date="1413498710"]IIRC, something like

                        @
                        QMAKE_POST_LINK += $$quote($(COPY_DIR) $$PWD/uitests PATH_TO_BUILDIR/ui)
                        @

                        should do the job[/quote]

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

                          And should also be cross-platform :)

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

                          1 Reply Last reply
                          0
                          • E Offline
                            E Offline
                            Exotic_Devel
                            wrote on last edited by
                            #13

                            My dear fellow, sorry to raise this topic, but how do I copy two different folders?
                            I tried this:

                            @QMAKE_POST_LINK += $$quote($(COPY_DIR) $$PWD/uis $$OUT_PWD/../tests/uis)
                            $$quote($(COPY_DIR) $$PWD/translations $$OUT_PWD/../tests/translations)@

                            unsuccessfully

                            1 Reply Last reply
                            0
                            • SGaistS Offline
                              SGaistS Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on last edited by
                              #14

                              You need to add $$escape_expand(\n\t) after each line except the last one

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

                              1 Reply Last reply
                              1
                              • E Offline
                                E Offline
                                Exotic_Devel
                                wrote on last edited by
                                #15

                                Thanks boy!

                                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