针对非标准C ++后缀的automake依赖关系跟踪

时间:2009-11-17 19:57:26

标签: c++ autotools libtool

如何强制automake为非标准C ++后缀文件生成依赖关系跟踪? 特别是我的意思是生成.deps目录文件内容。 我也在使用libtool。

由于

2 个答案:

答案 0 :(得分:2)

看看this section in the automake manual regarading default _SOURCES。看起来好像在说:

bin_PROGRAMS = target
AM_DEFAULT_SOURCE_EXT = .foo

会让你超越第一步。所以,现在automake知道在哪里寻找第一个依赖项(target.foo),它会要求GCC根据该文件中包含的头文件名来计算target.foo的依赖关系。 GCC吐出推断的对象名称,转换包含的stem.h -> stem.o。而这就是我撞墙的地方。要使您的automake脚本完全可移植,您不能使用%模式。你必须使用后缀堆叠,正如wallyk在他的回答中所证明的那样。

根据您的可移植性要求,您可以忽略它并将Makefile.in中的隐式规则定义为:

%.o : %.foo
    $(CXX) -o $@ -c $(CPPFLAGS) $(CXXFLAGS) $<

如果可移植性是一项严格的要求,我担心如果没有大量的黑客行为,你就会失败。

答案 1 :(得分:0)

添加隐式规则。例如,使用foo编译器*.foo编译foocc文件:

.foo.o:
      foocc -c -o $@ $<