4

我正在编译一个基于 autotools C 的项目,我收到了一些警告和错误。它们显示如下:

foo.c:123: warning: some message

我希望它们像这样显示:

/full/path/to/foo.c:123: warning: some message

我知道这不能通过gcc进行配置,除非将完整的文件路径本身传递给它,所以我想这必须通过autoconf/automake进行配置。

这可能吗?如果是这样,怎么做?

4

4 回答 4

2

我不知道该怎么做,并怀疑它无法做到。但是,如果您的更高目标是找到警告引用的文件,则使用 E​​macs 可能就足够了:

在顶部源目录中打开一个文件,例如C-x C-f configure.ac RET,运行编译:(M-x compile RET可能编辑make命令)RET。当您在编译缓冲区中看到警告时,请使用C-x backtick(Cx `) 显示源位置。

Emacs 通过解析“进入目录/foo”和“离开目录/foo”消息来管理这个,make所以你可能想要模拟它。

于 2013-09-05T14:30:37.173 回答
2

这是一个可能对你有用的技巧。

可以添加以下行Makefile.am

VPATH = $(abs_srcdir)

这将生成Makefile将通过绝对路径引用目录来搜索源目录。反过来,gcc 将接收源文件的绝对路径。

我不确定这个技巧是否适用于所有版本。在某些版本的 make 中,变量的值VPATH被读取为纯文本,并且 make 不会替换abs_srcdir.

于 2014-04-05T17:58:39.763 回答
0

我认为您可能能够做到这一点,但它可能会导致其他自动工具make目标(例如make dist)出现问题,所以我建议不要这样做。有绝对的类似物top_srcdir, top_builddir,srcdir和以(eg )builddir为前缀的变量。因此,在使用 gcc 编译它们之前,您可以尝试在源文件前面加上这些前缀。abs_abs_top_srcdir

我不确定您为什么认为 autotools 应该这样做。如何打印警告/错误是 C 编译器 (gcc) 的功能,而不是自动工具的功能。

于 2013-09-05T17:16:30.977 回答
0

对于树外构建,用于引用源文件的文件名在

mkdir _build
cd _build
../source-tree/configure --prefix=...

mkdir _build
cd _build
$PWD/../source-tree/configure --prefix=...
于 2020-08-19T22:21:05.100 回答