【问题标题】:How to use DEPLOYMENTFOLDERS directive in Qt Widget based application如何在基于 Qt Widget 的应用程序中使用 DEPLOYMENTFOLDERS 指令
【发布时间】:2013-08-26 09:40:40
【问题描述】:

当我使用 Qt Creator 创建 Qt Quick / QML 项目时,它会将 DEPLOYMENTFOLDERS 添加到 .pro 文件中。我可以使用此指令在构建(编译)应用程序时将一些文件夹/文件复制到构建目录。

如何在一个简单的基于 Qt Widget 的应用程序中使用它?

Qt Creator 不会为简单的 Qt 项目添加它,当我手动添加它时,它不起作用。

这是我的项目文件:

folder_01.source = sounds
#folder_01.target =
DEPLOYMENTFOLDERS += folder_01

QT += core gui widgets
TARGET = myApp
TEMPLATE = app
SOURCES += main.cpp

我尝试了“/sounds”和“sounds/*”并且是这样想的。但没有任何效果。我在这里错过了什么?

【问题讨论】:

    标签: qt qt-creator


    【解决方案1】:

    我正在研究这个并偶然发现了这个未回答的问题。

    基本上我确实提倡使用资源系统,但是当您进行快速 UI 开发 (qml) 时,等待资源文件编译可能会很烦人,所以我想简单地复制这些文件。

    这里令人困惑的是源/目标的含义略有不同。最好的描述方式是copy this -> this root,而不是copy this -> here

    我的构建只是希望我的资源在路径上“原始”,所以我正在复制 folder->/ 这是我拥有的项目文件的示例:

    folder_qml.source = qml
    folder_qml.target = /
    folder_js.source = js
    folder_js.target = /
    folder_img.source = img
    folder_img.target = /
    DEPLOYMENTFOLDERS += folder_qml folder_js folder_img
    

    构建时可以验证输出:

    10:41:57: Starting: "C:\Qt\Qt5.2.1\Tools\mingw48_32\bin\mingw32-make.exe" 
    C:/Qt/Qt5.2.1/Tools/mingw48_32/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory 'C:/Development/Subversion/MyBuild-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
    Copying application data... 
    60 File(s) copied
    12 File(s) copied
    6 File(s) copied
    mingw32-make[1]: Leaving directory 'C:/Development/Subversion/MyBuild-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
    Copying application data... 
    60 File(s) copied
    12 File(s) copied
    6 File(s) copied
    10:41:58: The process "C:\Qt\Qt5.2.1\Tools\mingw48_32\bin\mingw32-make.exe" exited normally.
    

    生成的构建如下所示:

    /Build dir/
      + release
      + debug
      + qml
      + js
      + img
      Makefile.Release
      Makefile.Debug
      Makefile
    

    我希望这有助于回答您的问题。我没有找到任何关于它的文档,所以我只是玩它直到它起作用。 (对于测试的模拟数据非常有帮助)。

    【讨论】:

      【解决方案2】:

      我刚刚浏览了文档(针对 4.8 和 5.x)并且在 qmake 部分中没有关于该变量的文档,所以看起来它纯粹是针对 qml 的。如果您尝试以通常的方式编译资源是使用qrc 文件来指定资源,不知道为什么Qt 决定只为qml 切换到DEPLOYMENTFOLDERS

      【讨论】:

      • 为简单起见,我使用 QSound(我知道这已被弃用)。 QSound 无法从嵌入式资源加载(我知道这很愚蠢)。我认为将文件夹自动复制到构建目录是很整洁的。
      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-19
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多