QTCreator如何使用INSTALLS将文件复制到输出目录中

13
我在我的Qt项目中有两个子目录docrootconfig。每当我构建/调试项目时,这些目录中的文件都应该被复制到构建目录中。
根据https://dev59.com/Qm865IYBdhLWcg3wHKte#3991210,可以使用 INSTALLS (QtDoc)来实现这一点,这似乎比运行复制命令要简单得多(例如 这里)。类似的方法在这里描述了。
config.path    = $${DESTDIR}/config
config.files   = config/*
docroot.path   = $${DESTDIR}/docroot
docroot.files  = docroot/*
INSTALLS       += config docroot
然而,当我在Qt Creator中运行构建时,什么也没有发生。这里我需要运行make install。我是否可以在每次构建时从Qt Creator内部自动触发/执行此操作?我需要始终使用最新版本的文件。 编辑:最终我使用了$$OUT_PWD代替$$DESTDIR
来自Logan的原始评论在这里: “只是一个提示:我使用了$$OUT_PWD而不是$$DESTDIR使其工作。有关参考,$$OUT_PWD是程序构建到的文件夹,$$PWD是正在构建程序的文件夹——换句话说,它是.pro文件所在的位置。”
2个回答

17

你需要的是自定义构建步骤。

  1. 切换到项目模式:按下Ctrl+5。
  2. 构建设置选项卡下的构建步骤中,单击添加构建步骤
  3. 从菜单中选择Make
  4. install写入Make arguments:文本输入框中。

(我检查时使用的版本是Qt Creator 2.4.1。)


1
你的部分是正确的,谢谢。我仍然只有一个问题,就是$${DESTDIR}没有被设置(虽然它自动设置为构建目录),尝试使用%{buildDir}也没有成功。所以必须找到正确的变量。 - Horst Walter

6

我在Windows 7上正在使用Shadow Build,遇到了和你一样的问题。

此外,在设置了我的INSTALLS并运行make install之后,我收到以下消息:

安装未执行任何操作。

原因是您必须自己设置$$DESTDIR。

在我的情况下,我想复制*.qml文件,我是这样做到的:

# if you are using Shadow build, you need to get the output folder
CONFIG(release, debug|release): DESTDIR = $$OUT_PWD/release
CONFIG(debug, debug|release): DESTDIR = $$OUT_PWD/debug

# if you are using normal build (non-shadow) that would have worked as well.
CONFIG(release, debug|release): DESTDIR = release
CONFIG(debug, debug|release): DESTDIR = debug    

QmlFiles.path = $$DESTDIR/Qml
QmlFiles.files += $$files(Qml/*.qml)

INSTALLS += QmlFiles

编辑:

我发现可以使用$$OUT_PWD来找到影子构建输出路径。因此,我修复了代码,并最终接近您使用的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接