多次编译子目标对象

时间:2014-07-22 23:19:51

标签: makefile autotools automake

Automake 1.14给我们带来了一些问题。起初,automake对投诉感到不满:

  

警告:源文件' X'在一个子目录中,但选项" subdir-objects'被禁用

所以我启用了subdir-objects,但现在它没有重新编译某些文件。例如,让我们说

src/a/foo.c在SUBDIR a中编译,但在src/b中,我想用不同的预处理程序标志再次编译它,但是由于../a/foo.o已经存在,make doesn&# 39;重建它。这是因为subdir-objects更改am_b_OBJECTS以查找../a/foo.o而不是foo.o。有没有办法解决原始投诉并指示make使用适当的预处理器标志第二次构建文件?这一切都适用于以前版本的automake。

我愿意在编译src / b之前执行rm ../a/foo.o,但我不知道如何编辑Makefile.am来实现这一点。

1 个答案:

答案 0 :(得分:0)

如果您在不同subdir-objects文件的同一树下使用Makefile.am,则会发生这种情况。由于automake无法看到您使用具有不同参数的相同源文件,因此它会假设它已正确重建。

对此的正确解决方案是不使用单独的Makefile.am文件,而是将构建系统改为non-recursive automake,因此在这种情况下,它将foo.c构建为foo-a.o }和foo-b.o