我的项目有以下设置:
~/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
答案 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 $<)
或其他什么。