我正在使用qmake和QT Creator一起开展一个多可执行的QT项目。每个可执行文件都有自己的.pro文件,所有这些文件都包含在一个开头的.pro文件中(template = subdirs)。每个单独的.pro文件还包含一个公共.pri文件,该文件设置DESTDIR,以便所有可执行文件最终都在同一个地方。此DESTDIR取决于它是编译为调试还是发布。这是非常有效的,直到我们通过另一个subdir .pro添加了一系列可执行文件,这些可执行文件位于覆盖范围之下。整体设置如下所示:
如果您有一个刚刚签出的副本,您可以运行qmake并且一切都会正常工作,直到您从调试切换到发布,反之亦然。执行此操作时,Project1.pro和Project2.pro会更新并将其可执行文件放在正确的目录中,但Project3.pro和Project4.pro会使用旧目录。
如果我手动删除所有受影响的makefile,qmake将生成新的。我想我可以写一些预编译命令来每次删除所有的makefile,但这似乎是错误的做事方式,更不用说我必须花费的时间来确保它在我们所有的平台上运行
我在QT 4.6.4到4.8.1
中尝试了这个当我使用QT Creator时,我通过不同的构建配置在调试和释放模式之间切换,模仿我在命令谎言上做的事情(即添加或删除CONFIG + = debug)
非常感谢任何和所有帮助。
答案 0 :(得分:6)
尽管QMake文档表明它仅适用于项目模式(创建.pro文件),但请尝试将-r
选项添加到qmake以强制它通过目录进行递归。
这是我们过去在多层次深度SUBDIR项目中使用的内容。
答案 1 :(得分:1)
我们遇到了同样的问题,并在调试/发布之间切换后,通过从顶级目录运行“make qmake”解决了这个问题。