非标准 C++ 的 automake 依赖性跟踪后缀

发布于 2024-08-11 07:04:05 字数 94 浏览 9 评论 0原文

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

谢谢

how can i force automake to generate dependency tracking for nonstandard C++ suffix files?
in particular I mean generating .deps directory file content.
I am using libtool as well.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酒与心事 2024-08-18 07:04:05

查看 automake 手册中有关默认值的部分_SOURCES。看起来就像是在说:

bin_PROGRAMS = target
AM_DEFAULT_SOURCE_EXT = .foo

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

根据您的可移植性要求,您可以忽略它并在 Makefile.in 中定义隐式规则,如下所示:

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

如果可移植性是严格的要求,那么恐怕您会运气不好,没有大量的黑客攻击。

Take a look at this section in the automake manual regarading default _SOURCES. It looks like saying:

bin_PROGRAMS = target
AM_DEFAULT_SOURCE_EXT = .foo

will get you past the first step. So, now automake knows where to look for the first dependency (target.foo), and it will ask GCC to compute the dependencies of target.foo based upon the header file names that are included in that file. GCC spits out the inferred object names, transforming the included stem.h -> stem.o. And here's where I hit a wall. To have your automake script be completely portable, you cannot use the % patterns. You must use the suffix stacking, as wallyk demonstrated in his answer.

Depending upon your portability requirements, you could just ignore that and define the implicit rule in Makefile.in to be something like:

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

If portability is a strict requirement I'm afraid you're out of luck without a lot of hacking.

紫南 2024-08-18 07:04:05

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

.foo.o:
      foocc -c -o $@ 
lt;

Add an implicit rule. For example, to compile *.foo files using a foo compiler foocc:

.foo.o:
      foocc -c -o $@ 
lt;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文