我有两个共享相同源文件的库:
# 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
-fPIC
,sipplib
没有-fPIC
。
在相应目录中创建的每个库的对象文件。
最终subdir-objects
成为默认值。如何保持这两个源文件的当前行为?一些明确的规则可能吗?
答案 0 :(得分:0)
当它成为默认值时,无法禁用它。您可以做的是将其迁移到非递归的Automake构建系统。此时,它将知道有不同的目标使用不同的标志编译相同的源文件(它需要在AC_PROG_CC_C_O
中调用configure.ac
。)
或者,hacky版本是创建仅包含
的src/sipplib/rphs_mt.c
文件
#include "../libmt/rphs_mt.c"
因此它实际上是一个单独的构建目标。