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来实现这一点。
答案 0 :(得分:0)
如果您在不同subdir-objects
文件的同一树下使用Makefile.am
,则会发生这种情况。由于automake无法看到您使用具有不同参数的相同源文件,因此它会假设它已正确重建。
对此的正确解决方案是不使用单独的Makefile.am
文件,而是将构建系统改为non-recursive automake,因此在这种情况下,它将foo.c
构建为foo-a.o
}和foo-b.o
。