10

问题

我正在使用 qmake 和 QT Creator 开发一个多可执行 QT 项目。每个可执行文件都有自己的 .pro 文件,所有这些文件都包含在一个总体 .pro 文件(模板=子目录)中。每个单独的 .pro 文件还包括一个通用的 .pri 文件,该文件设置 DESTDIR 以便所有可执行文件最终位于同一位置。这个 DESTDIR 取决于它是被编译为调试还是发布。在我们通过另一个子目录 .pro 添加了一组可执行文件之前,这一直非常有效。整体设置如下所示:

  • All.pro
  • | - Project1.pro
  • | - Project2.pro
  • | - Subdirs.pro
  • | -- | - Project3.pro
  • | -- | - Project4.pro

如果你有一个新签出的副本,你可以运行 qmake 并且一切都会工作,直到你从调试切换到发布,反之亦然。当您这样做时,Project1.pro 和 Project2.pro 更新就好了,并将它们的可执行文件放在正确的目录中,但 Project3.pro 和 Project4.pro 使用旧目录。


尝试

如果我手动删除所有受影响的 makefile,qmake 将生成新的。我想我可以编写某种预编译命令来每次删除所有 makefile,但这似乎是错误的做事方式,更不用说我必须花费大量时间来确保它在我们所有的平台上都能正常工作.

我在 QT 4.6.4 到 4.8.1 中试过这个

当我使用 QT Creator 时,我通过不同的构建配置在调试和发布模式之间切换,这模仿了我在命令 lie 上所做的事情(即添加或删除 CONFIG+=debug)


问题

  • 是什么阻止 qmake 更新 makefile?
  • 如果它只是 qmake 中的一个错误,那么最好的解决方法是什么?

非常感谢任何和所有帮助。

4

2 回答 2

9

即使 QMake 文档表明它仅适用于项目模式(创建 .pro 文件),请尝试将-r选项添加到 qmake 以强制它通过目录递归。

这是我们过去在多层次深 SUBDIR 项目中使用的。

于 2012-10-03T14:27:37.467 回答
1

我们遇到了同样的问题,并通过在调试/发布之间切换后从顶级目录运行“make qmake”来解决它。

于 2013-02-11T20:51:41.627 回答