Closed xq114 closed 2 years ago
编译器本身错误信息不就带了 文件名和路径了么
编译器本身错误信息不就带了 文件名和路径了么
如果错误在源文件里面确实编译器会指出,但错误在头文件里面gcc不会指出编译的是哪一个源文件
这个就不太好搞了 如果xmake额外加了路径提示,编译器如果也带了 那就重复了,还会干扰 vs 和 vscode 上编译错误的正常解析和跳转
即使报错在头文件,默认提示应该也是定位到头文件才对。。
出错后 自己加个 -j1 看下就好了
或者直接加 -v 也能看到完整路径的。。
In file included from src/tbox/math/impl/math.c:25:
In file included from src/tbox/math/impl/../math.h:30:
In file included from src/tbox/math/impl/../fixed6.h:29:
In file included from src/tbox/math/impl/../fixed16.h:30:
In file included from src/tbox/math/impl/../../libm/libm.h:28:
In file included from src/tbox/math/impl/../../libm/math.h:37:
src/tbox/math/impl/../../libm/ceil.h:24:2: error:
#error
现在是提取了 error:xx 信息,所以默认上面的 原路径被strip掉了,只能看到最近一层,这个暂时也没办法改进,涉及到 raise 和 errors的回溯处理
我稍微改进了下,非 verbose 模式,尾部追加 源路径,因为放开头不好处理,容易干扰 vs/vscode解析
error: src/tbox/math/impl/../../libm/ceil.h:24:2: error:
#error
^
1 error generated.
> in src/tbox/math/impl/math.c
这里还有点问题,现在编译c和c++的时候都有指出,但编译cuda程序的时候没有指出出错的是哪个文件
你可以参考 gcc.lua 那个,在 nvcc.lua 里面也加上这个
你在什么场景下需要该功能?
xmake默认并行编译,一个问题是在发生错误的时候不知道是编译哪个文件的时候出错。
这样报错信息只有编译器本身的信息,没有xmake提供的哪一个文件编译出错的信息。并且所有信息的排列容易让人以为出错的就是d.cpp,造成误导(实际上错误可能来源于a.cpp~d.cpp的任何一个)
描述可能的解决方案
编译失败的时候明确指出哪一个文件是错误的来源