繁体   English   中英

如果 Makefile 更改,则自动生成源文件

[英]Automake rebuild source file if Makefile changes

使用 autoconf/automake 构建系统时,如果 Makefile.am(或更高级别,如 configure.ac)中的编译器标志或其他变量发生更改,则与该 ZB67911656EF5D18C4AE36CB6741 关联的源文件不会自动重建。 这变得尤为重要,因为我们将 automake 用作仅根据需要重新编译的持续构建系统的一部分。

我的想法是包含 Makefile 作为 .o 文件的依赖项,理论上可以解决上述问题。 所以有几个问题:

首先,是否可以添加这样的规则? 我宁愿不必将自定义规则添加到每个 Makefile.am 中,因此可以放入顶级文件(如 configure.ac)的东西会很棒。

其次,这种方法的缺点是在某些情况下,对 Makefile 的更改实际上并没有影响编译,所以我最终会在不需要时重新构建。 我想我愿意忍受这个(或者至少尝试一下看看它有多痛苦),以便更好地保证我的构建是正确的,但是有没有更好的方法来解决这个问题? 我相信 clearmake 通过保存实际的编译器命令(以及其他依赖项)然后将当前命令与之前的命令进行比较以确定是否需要重新生成文件来解决这个问题。

如果您使用 ccache ( ./configure CXX='ccache g++' ,或者只是将 ccache 的 g++ 添加到路径中),虚假重建应该非常便宜并且仍然安全。 还要确保永远不要使用AM_MAINTAINER_MODE autoconf 宏,它使依赖项跟踪成为可选(以 --enable-maintainer-mode 标志为条件)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM