如何保持两个相关文件同步?

时间:2015-05-29 18:41:01

标签: c makefile

假设我有一个类似于此的Makefile:

program.revision: smaug
    git rev-parse HEAD > program.revision

program: $(obj)
    $(CC) -o $@ $^ $(LDFLAGS)

目标很明确:我希望program.revision 始终镜像创建program的源代码的修订版。

但我写了这篇文章然后意识到它可能不足以满足我的需求和担忧:

  1. 如果program的编译失败了一半,program的旧(工作)版本是否会被遗忘,还是会被删除?

  2. 与第1点相关,如何确保删除program后,program.revision也会被删除?同样地,如果旧版本存活,旧的program.revision保持不变?

  3. 如何确保program.revision始终保持同步,即使我专门执行make program而不是普通make

  4. 我意识到通过在构建它们之前删除旧文件可以使这个问题变得相当简单,但是最小化由于构建失败导致program最终丢失的可能性非常重要。

  5. 我如何妥善处理这种情况?

    编辑:

    写完之后,我突然意识到我的问题可能不是我想的那样。我的目标是让program的版本知道它的创建版本,所以答案可能不在Makefileprogram.revision文件中,而是找到一种方法将此信息编译到可执行文件中。嗯..

0 个答案:

没有答案