强制当前目录中的目标文件,即使子目标对象在

时间:2015-12-24 11:17:33

标签: automake

我有两个共享相同源文件的库:

# src/lib_mt/Makefile.am:
libppb_la_SOURCES = rphs_mt.c timer_mt.c

# src/sipplib/Makefile.am:
libsipp_a_SOURCES = ../lib_mt/rphs_mt.c ../lib_mt/timer_mt.c

每个源文件编译两次。首先是lib_mt -fPICsipplib没有-fPIC

在相应目录中创建的每个库的对象文件。

最终subdir-objects成为默认值。如何保持这两个源文件的当前行为?一些明确的规则可能吗?

1 个答案:

答案 0 :(得分:0)

当它成为默认值时,无法禁用它。您可以做的是将其迁移到非递归的Automake构建系统。此时,它将知道有不同的目标使用不同的标志编译相同的源文件(它需要在AC_PROG_CC_C_O中调用configure.ac。)

或者,hacky版本是创建仅包含

src/sipplib/rphs_mt.c文件
#include "../libmt/rphs_mt.c"

因此它实际上是一个单独的构建目标。