如何强制 automake 为非标准 C++ 后缀文件生成依赖跟踪?特别是我的意思是生成 .deps 目录文件内容。我也在使用 libtool。
谢谢
看看automake 手册中关于 default 的这一部分_SOURCES
。好像在说:
bin_PROGRAMS = target
AM_DEFAULT_SOURCE_EXT = .foo
会让你迈出第一步。所以,现在 automake 知道在哪里寻找第一个依赖项(target.foo
),它会要求 GCCtarget.foo
根据包含在该文件中的头文件名计算依赖项。GCC 吐出推断的对象名称,转换包含的stem.h -> stem.o
. 这就是我碰壁的地方。要让您的 automake 脚本完全可移植,您不能使用这些%
模式。正如 wallyk 在他的回答中所展示的那样,您必须使用后缀堆叠。
根据您的可移植性要求,您可以忽略它并将 Makefile.in 中的隐式规则定义为:
%.o : %.foo
$(CXX) -o $@ -c $(CPPFLAGS) $(CXXFLAGS) $<
如果可移植性是一项严格的要求,那么如果没有大量黑客攻击,恐怕您会很不走运。
添加隐式规则。例如,*.foo
使用 foo 编译器编译文件foocc
:
.foo.o:
foocc -c -o $@ $<