有人能说一下Qt工程中的.pro文件中DISTFILES宏的作用吗?

梁小满 2019-10-25 12:06:06
有人能说一下Qt工程中的.pro文件中的DISTFILES宏具体的用处吗?(通过在Qt Creator中>右键工程>添加已有文件>添加动态库会自动在.pro文件中添加这个宏。)原以为这个宏是通过添加动态库到工程出现的,那么和LIBS宏应该是一样的,都是用来链接动态库的。但实际测试却发现并不是。无论是在Windows下还是Ubuntu下,DISTFILES似乎都可有可无,而LIBS却是必须要有的。网上查了很多资料也很少有提到这个宏的。虽然不影响使用还是希望能够告知一下。
...全文
5597 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
donwmufromdying 2019-10-30
  • 打赏
  • 举报
回复
DISTFILES Specifies a list of files to be included in the dist target. This feature is supported by UnixMake specs only. For example: DISTFILES += ../program.txt 一般用于指示你的需要编译时输出到dist目录的其他文件的。如下边例子: DISTFILES = $$PWD/qtcreator.sh \ qml/query.qml \ doc/readme.md
梁小满 2019-10-28
  • 打赏
  • 举报
回复
引用 1 楼 dext 的回复:
https://doc.qt.io/qt-5/qmake-variable-reference.html#distfiles

Specifies a list of files to be included in the dist target. This feature is supported by UnixMake specs only.

将罗列的文件复制到release文件夹下,这个选项只对 Unix 类的 makefile 有效。也就是说在Windows下,只有MinGW编译器才有作用
照这个意思话,是不是通过这个宏加入到工程的文件就不需要绝对路径可以直接通过文件名打开(例如我用open打开一个文件的时候,原本需要QFile::setFileName("../../test.bmp");,加了这个宏之后,可以QFile::setFileName("test.bmp");)了,我也在windows下使用Release模式测试了一下,但没有效果,还是需要使用绝对路径。同时在工程编译路径下的release目录中也并没有拷贝添加目标文件。我测试的环境是windows下的Qt5.11.3,编译器版本是32bit的MinGW_53。可能就正如官方文档中所说的Specifies a list of files to be included in the dist target. This feature is supported by UnixMake specs only.这个宏的特性只有在Unix下才能正常使用。目前我只发现这个宏的唯一作用是在于可以把一个工程涉及的所有文件都添加到工程目录的Other files中,方便后面看工程的人,清晰的了解整个工程架构、方便修改涉及的文件、方便配置工程的运行环境。仅仅只是方便查看工程,并没有实际作用。但这也仅是我初步的理解,不知是否有误,望斧正。
dext 2019-10-28
  • 打赏
  • 举报
回复
dist target 指的是 一个文件夹

引用 2 楼 幻夢之葉 的回复:
不懂求问:看这个解释是嵌入到目标程序中?


---------------------------------------------------------


这里你要分清楚 工作文件夹 并不一定是 EXE 所在文件夹,我认为 你的问题就是由于这个造成的。
另外还有一个OTHER_FILES 变量 才是用来 简单的 加入到 工程视图中的

引用 3 楼 十一一个人 的回复:
照这个意思话,是不是通过这个宏加入到工程的文件就不需要绝对路径可以直接通过文件名打开(例如我用open打开一个文件的时候,原本需要QFile::setFileName("../../test.bmp");,加了这个宏之后,可以QFile::setFileName("test.bmp");)了,我也在windows下使用Release模式测试了一下,但没有效果,还是需要使用绝对路径。同时在工程编译路径下的release目录中也并没有拷贝添加目标文件。我测试的环境是windows下的Qt5.11.3,编译器版本是32bit的MinGW_53。可能就正如官方文档中所说的Specifies a list of files to be included in the dist target. This feature is supported by UnixMake specs only.这个宏的特性只有在Unix下才能正常使用。目前我只发现这个宏的唯一作用是在于可以把一个工程涉及的所有文件都添加到工程目录的Other files中,方便后面看工程的人,清晰的了解整个工程架构、方便修改涉及的文件、方便配置工程的运行环境。仅仅只是方便查看工程,并没有实际作用。但这也仅是我初步的理解,不知是否有误,望斧正。
幻夢之葉 2019-10-27
  • 打赏
  • 举报
回复
引用 1 楼 dext 的回复:
https://doc.qt.io/qt-5/qmake-variable-reference.html#distfiles Specifies a list of files to be included in the dist target. This feature is supported by UnixMake specs only. 将罗列的文件复制到release文件夹下,这个选项只对 Unix 类的 makefile 有效。也就是说在Windows下,只有MinGW编译器才有作用
不懂求问:看这个解释是嵌入到目标程序中?
dext 2019-10-25
  • 打赏
  • 举报
回复
https://doc.qt.io/qt-5/qmake-variable-reference.html#distfiles

Specifies a list of files to be included in the dist target. This feature is supported by UnixMake specs only.

将罗列的文件复制到release文件夹下,这个选项只对 Unix 类的 makefile 有效。也就是说在Windows下,只有MinGW编译器才有作用

16,239

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧