0

我的项目有以下设置:

~/proj -> includes makefile and other stuff
~/proj/headers -> includes c header files
~/proj/source -> includes C source files

在主树文件夹中执行 make 时 ~/proj 错误会显示如下文件名:

"source1.c" error variable...etc

如何让 make 显示错误文件的绝对路径。像这样的东西:

~/proj/source/source1.c" error variable etc...

这是一个错误示例:

Dependencies for mem_init.c
Compiling mem_init.c
"mem_init.c", line 513: warning: implicit function declaration: init_mem (E_NO_IMPLICIT_DECL_ALLOWED)
cc: acomp failed for mem_init.c
4

1 回答 1

1

这根本不可能,因为打印这些错误的不是 make:它是你的编译器。您要问的是如何(或是否)让您的编译器在其错误消息中显示绝对路径。当然,为了提出这个问题,您必须指定您正在使用的编译器。

如果您在命令行上将源文件的绝对路径传递给编译器,则编译器可能会在其错误消息中使用相同的路径。也就是说,如果您运行,cc -o foo.o foo.c您的错误消息将相对于foo.c,但如果您运行,cc -o foo.o /home/me/proj/source/foo.c您的错误消息将相对于/home/me/proj/source/foo.c.

如果这是真的,那么您可以将您的 make 规则更改为(如果您使用的是足够新的 GNU make):

%.o : %.c
         $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(abspath $<)

管他呢。

于 2013-08-16T18:25:26.993 回答