跳过不需要编译的项目的配置

Skipping configuration of projects that do not need compiling

我是 运行 一个编译很多项目的长构建脚本,对于大多数构建 make 通常 returns 和 make: Nothing to be done for 'all',这很好,因为我不会在每次构建时更改那么多代码。然而,该脚本仍然需要很长时间才能完成,这仅仅是因为它为每个项目调用 autotools configurescript 和其他一些脚本。

我在某处读到 make 使用时间戳来测试它是否需要构建。

有没有办法在调用configure脚本之前询问Make是否需要构建? 或者另一种防止重新配置所有项目的方法?

每个项目配置一次后,你不需要再运行每个configure脚本,除非那些configure脚本本身改变了,或者你有理由相信测试结果将会改变。如有必要,您可以 运行 config.status 而不是重新创建输出文件,而无需重新 运行 进行所有测试。如果您确信输出文件也不需要重新创建,那么您可以 运行 make.

此外,如果您将 Automake 与 Autoconf 结合使用,那么您的 Makefile 是使用检测 configure 的 m4 源(通常是 configure.ac)何时发生变化的工具构建的,因此需要一个重新配置。只要由基于 Automake 的 configure 生成的 Makefile 仍然存在,您只需 运行 make,它就会做正确的事情。如果缺少 Makefile,那么您仍然需要 运行 configureconfig.status

此外,您可以考虑为所有配置脚本使用共享缓存文件,方法是通过 --config-cache 选项为每个配置脚本指定该文件。这应该通过避免冗余测试来减少每个 configure 脚本消耗的时间。