我正在编译一个基于 autotools C 的项目,我收到了一些警告和错误。它们显示如下:
foo.c:123: warning: some message
我希望它们像这样显示:
/full/path/to/foo.c:123: warning: some message
我知道这不能通过gcc进行配置,除非将完整的文件路径本身传递给它,所以我想这必须通过autoconf/automake进行配置。
这可能吗?如果是这样,怎么做?
我正在编译一个基于 autotools C 的项目,我收到了一些警告和错误。它们显示如下:
foo.c:123: warning: some message
我希望它们像这样显示:
/full/path/to/foo.c:123: warning: some message
我知道这不能通过gcc进行配置,除非将完整的文件路径本身传递给它,所以我想这必须通过autoconf/automake进行配置。
这可能吗?如果是这样,怎么做?
我不知道该怎么做,并怀疑它无法做到。但是,如果您的更高目标是找到警告引用的文件,则使用 Emacs 可能就足够了:
在顶部源目录中打开一个文件,例如C-x C-f configure.ac RET
,运行编译:(M-x compile RET
可能编辑make
命令)RET
。当您在编译缓冲区中看到警告时,请使用C-x backtick
(Cx `) 显示源位置。
Emacs 通过解析“进入目录/foo”和“离开目录/foo”消息来管理这个,make
所以你可能想要模拟它。
这是一个可能对你有用的技巧。
可以添加以下行Makefile.am
VPATH = $(abs_srcdir)
这将生成Makefile
将通过绝对路径引用目录来搜索源目录。反过来,gcc 将接收源文件的绝对路径。
我不确定这个技巧是否适用于所有版本。在某些版本的 make 中,变量的值VPATH
被读取为纯文本,并且 make 不会替换abs_srcdir
.
我认为您可能能够做到这一点,但它可能会导致其他自动工具make
目标(例如make dist
)出现问题,所以我建议不要这样做。有绝对的类似物top_srcdir
, top_builddir
,srcdir
和以(eg )builddir
为前缀的变量。因此,在使用 gcc 编译它们之前,您可以尝试在源文件前面加上这些前缀。abs_
abs_top_srcdir
我不确定您为什么认为 autotools 应该这样做。如何打印警告/错误是 C 编译器 (gcc) 的功能,而不是自动工具的功能。
对于树外构建,用于引用源文件的文件名在
mkdir _build
cd _build
../source-tree/configure --prefix=...
和
mkdir _build
cd _build
$PWD/../source-tree/configure --prefix=...