QT Creator: 如何仅编译更改内容

9
不知道我的QT Creator选项或项目选项有什么改变,但是出于某种原因,进行构建(Ctrl-B)或启动调试会话(F5)现在会触发一个完整的重建项目,这需要几分钟的时间。我希望它只编译已更改的文件(和依赖项),就像以前一样。我做错了什么? 我尝试了“始终在部署之前构建”和“始终在运行之前部署”的设置,但更改这些设置只是在不进行任何构建或进行完全重建之间切换。如何重新激活“差分”构建? 谢谢!

1
展示你的project_name.pro.user文件,其中包含你对项目设置所做的所有更改。 - divanov
我不确定如何在这里使用附件 - 文件内容太大无法复制和粘贴。为了创建一个新的副本,我只是删除了.pro.user文件。但没有任何改变。唯一的构建步骤是qmake.exe“... .pro”-r-spec win32-g++。 - Ossan Dust
您可以在“Output Panes”中查看文本构建日志,选择名称为“4 Compile Output”的窗格。您可能想分享它的内容。清除该窗格,运行重新构建,然后复制输出。http://doc.qt.digia.com/qtcreator/creator-quick-tour.html#compile-output - divanov
感谢您的贡献divanov!我分析了构建输出,然后我意识到一个小的代码更改实际上并没有像我最初想象的那样触发重建。它会触发所有“依赖”源文件的构建。应用程序随着时间的推移已经大幅增长,并且由于应用程序结构(MVC,具有一个主窗口和一个大型中央控制器类),看起来依赖项的数量也变得过大。是时候彻底重新思考应用程序结构,以减轻编译器的负担... 感谢您让我意识到这一点,对于误导性问题感到抱歉。 - Ossan Dust
最近我也遇到了同样的问题,但在另一个论坛上找到了解决方案。问题是我的系统日期时间比当前日期晚了一个月。当我更改后,它只编译了更改过的部分。有人知道为什么会出现这种情况吗? - Kahn
1个回答

4

如果您不想重新构建项目,可以从QT Creator菜单中运行qmake,然后开始build。 如果您的电脑性能较好,您可以在make命令后添加-j选项,这样可以将重建时间缩短3-4倍。


1
在Qt Creator中,您可以添加自定义构建步骤。如果将"make clean"作为此自定义步骤添加到构建中,则会强制Qt Creator删除所有二进制文件,然后每次重新构建它们。 - divanov
当然可以,但是默认情况下,Qt Creator有两个构建步骤:qmake和make。关于“make clean”,您可以在“清理步骤”中找到。 然后,单一变量用于“重建”,当运行“构建”时,主要的构建步骤将被重写为“构建”选项。(作者摇了构建步骤) - Ruu
非常感谢你,Ruu。你的“-j”建议真的让我感到开心。以前,即使是最小的代码更改也会导致编译时间长达110秒。现在我在makefile中添加了“-j”选项,同样的重新编译只需要28秒!确实快了4倍,这让工作再次变得可行。CPU利用率从仅占13%提高到100%,这正是它被设计来完成的工作。;-) - Ossan Dust
你的意思是说,在一个.cpp文件中进行更改后,单个作业构建需要110秒?我不知道你使用的CPU类型和代码行数,但这听起来太多了。如果你更改头文件,那么它应该会导致所有包含它的源文件重新构建,这可能意味着你有过多的包含文件。 - divanov
CPU = i7-2670 四核心,项目 = 72 个 cpp 文件 + 34 个表单,该应用程序可以在此处下载:http://www.gordius.be/midi-footcontroller-downloads.php。这是一个具有复杂主窗口(由许多子控件组成)的应用程序,处理一个复杂设置(由许多数据子类组成)。我将检查如何减少级联包含的数量。 - Ossan Dust
在项目配置中哪里可以更改这个? - Tomáš Zato

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