12

我有两个子目录docrootconfig在我的 Qt 项目中。每当我构建/调试项目时,应将这些目录中的文件复制到构建目录。

https://stackoverflow.com/a/3991210/356726开始,这可以通过使用INSTALLSQtDoc )来实现,这似乎比运行复制命令(例如这里)容易得多。此处描述了一种类似的方法。

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 文件是。”

4

2 回答 2

17

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

  1. 切换到项目模式:按 Ctrl+5。
  2. Build Steps下的Build Settings选项卡上,单击Add Build Step
  3. 从菜单中选择制作。
  4. install写入Make 参数:文本输入框。

(我检查这些的版本是 Qt Creator 2.4.1。)

于 2012-07-22T09:08:18.650 回答
6

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

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

`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可以用来查找 Shadow Build Output 路径。因此,我修复了最终接近您使用的代码。

于 2012-10-31T22:15:41.333 回答