Makefile用于查看绝对路径中存在错误的文件

时间:2013-08-16 18:10:14

标签: makefile

我的项目有以下设置:

~/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

1 个答案:

答案 0 :(得分:1)

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

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

如果这是真的,那么你可以将你的制作规则更改为类似的东西(如果你正在使用GNU make的足够新的年份):

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

或其他什么。