当编译pwd中的文件时,让gcc/g++使用绝对路径来警告。

5

有没有办法让gcc在打印当前目录中编译的文件中发现错误时使用绝对路径?

例如,当打印错误时,以下命令可以实现我想要的效果:

g++ -I. -I../../.. /home/some/path/somefile.cpp

但我希望能够用类似以下的方式达到相同的效果:

g++ -I. -I../../.. somefile.cpp

我希望警告和错误信息的格式类似于:

/home/some/path/somefile.cpp:299:52: warning: some warning
1个回答

1

使用gcc本身无法完成此操作,但是使用包装脚本可以轻松实现,在安装" gcc","g++"等目录之前的路径中:

#! /bin/sh
sourcefile="$1"; shift
case "$sourcefile" in
    /*) ;;
    *) sourcefile="$PWD/$sourcefile" ;;
esac
exec "/usr/bin/${0##*/}" "$sourcefile" "$@"

只要在编译器调用中始终将源文件放在第一位(您需要调整Makefile),就可以实现。


2
如果$1是绝对路径或者是"-I."(就像在问题中一样),这将会出现严重错误。 - Employed Russian
我确实说过你必须始终将源文件放在第一位。不过,关于$1是绝对路径的好点子,我会修复它。 - zwol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接