构建 Qt:“make clean”会导致所有内容重新编译?

构建 Qt:“make clean”会导致所有内容重新编译?

(这适用于Qt>= 4.7.3 的版本。)我尝试Qt在我的 Debian 机器上使用自定义参数进行构建,实际上需要很长时间才能编译(IIRC 在单核 CPU 上超过 6 小时)。这就是为什么我想确保在这个过程中我不会犯任何愚蠢的错误。但是,我选择在成功链接后清理文件和其他内容make clean*.o这似乎是个坏主意!因为我make install在那之后做了一次,你不会相信,这次make clean尝试导致了一切清理过程后重新编译!尽管到目前为止,我一直认为make clean即使删除了所有目标文件和相关内容,也确实可以进行整洁的安装。显然,有了Qt,事情就不同了。

在官方文档中Qt 4.7(参见http://qt-project.org/doc/qt-4.7/install-x11.html),他们甚至没有提到选修的 make clean按照命令的顺序。据我现在所知,这是有充分理由的。尽管如此,我不能称之为“遵守标准”,因为我已经编译了数百个开源应用程序,并且从未make clean触发任何重新编译过程,也没有删除任何应该保留的内容(除非其中存在错误) )

答案1

我不知道你从哪里得到这样的想法:在 amake clean之前做 amake install是你应该做的事情。

自动工具的规范INSTALL文件详细说明了该过程:

  1. ./configure
  2. make
  3. make check(选修的)
  4. make install
  5. make installcheck(选修的)

在第 6 项中,它说:

您可以删除程序二进制文件通过键入 . 和来自源代码目录的目标文件make clean

(强调我的。)

make clean是您在重新编译之前要做的事情,以确保获得干净的构建并且没有以前运行留下的副产品。你能行的amake install如果您想释放一些空间但保留源代码和配置。你应该不是在安装之前执行此操作。

答案2

Qt 构建脚本的工作原理如下:

1 First build qmake
2 Generate Makefile for a subprojects (*.pro)
3 Start building libaries, then examples and demo projects

是的,make clean 将清除除 Qt 生成的配置文件之外的所有内容。

我的技巧是删除顶部 *.pro 文件中的“demo”和“examples”,这样可以节省大约 40% 的时间(在 i5 CPU 上)

不管怎样,你可以设置ccache来加速编译,但这需要大约2G+的磁盘空间用于缓冲

相关内容