我们在一个具有两种不同配置类型的项目(一个解决方案)中使用Visual Studio (2017):DynamicLinkLibrary和Makefile。Makefile配置由第三方编译器的maekfile (嵌入式应用程序的Greenhills)控制,DynamicLinkLibrary当然在内部运行Visual Studio。Makefile配置使用Visual Studio NMake模板的元素,对于编译器调用本身,有以下命令行,其中使用传输参数调用批处理文件
$(ProjectDir)..\mm.bat PLL02#$(MSBuildProjectName) bin_comp 3 LIBYES 2 /F诊断程序
mm.bat是具有7个参数的批处理控件,用于Greenhills编译器。
如果第三方编译器检测到源代码中的编译器错误,我们现在要激活一个舒适的ErrorParser,它通过双击VisualStudio输出窗口中的错误行将相应的源代码文件加载到Visual Stuido的源代码编辑器窗口中,并自动将光标放在错误的代码行上。如果Eclipse被用作Makefile项目的第二个IDE,那么通过Regex控件('Regex Error Parser')就可以很好地工作。但是,这在Visual Studio中不起作用。是否可以直接从输出窗口执行此操作?这里有人有什么建议吗?粗略地说,是否可以通过双击从Visual Studio输出窗口触发操作(从这个意义上说,单击的行将由输出窗口“读取”以进行进一步处理;进一步的处理最终应显示错误的源代码行)。
致以最好的问候,罗杰
附言:下面是我想知道的内容:
发布于 2021-04-19 03:50:23
我不相信你可以让VSS理解除了它自己的格式之外的其他格式。但还有另一种方法可以奏效。将编译器的错误输出格式化为VSS格式,并将其输出到VSS输出窗口中。
VSS错误格式列表:
d:\MyProg\main\Sourcefiles\myModul\src\myFile.c(2426): error C2039:也许您的编译器会有一个类似这样的格式来更改为VSS格式:
d:\/MyProg\main\Sourcefiles/myModul/src/myFile.c", line 2426: error #136:
struct "_Ts_braketest" has no field "braketest_stepx"
S_btest.braketest_stepx = 2520;
^流编辑器sed很好地完成了这样的任务。以一种简单的方式,您可以使用sed的命令文件逐步格式化。命令文件socToVss.sed:
s,\\/,\\,g #replace \/ to \ (delimiter , to prevent escaping slash)
s,\/,\\,g #replace / to \ (delimiter , to prevent escaping slash)
s/\"//g #replace " to nothing
s/c,[[:space:]]line[[:space:]]/c(/g #formating line number
s/\(([0-9]*\):/\1):/g #formating line number
s/\(error[[:space:]]\)#\([0-9]*\)/\1C\2/g #formating error number使用sed命令文件将错误从errors.txt格式化为errorsVssFormat.txt并键入ist out的makefile示例:
make 2> errors.txt
sed -f socToVss.sed errors.txt > errorsVssFormat.txt
type errorsVssFormat.txt您可以为http://unxutils.sourceforge.net/ Win32使用开源GNU实用程序
祝你工作顺利;-)
https://stackoverflow.com/questions/67104240
复制相似问题