Makefile可查看在绝对路径中有错误的文件



我的项目有以下设置:

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

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

"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

这根本不可能,因为打印这些错误的不是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新版本):

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

或者其他什么。

最新更新