我几小时前就开始使用cmake 3.7.0-rc1了,我想知道为SublimeText生成的构建系统有什么问题,这里有一个例子。提供的构建系统:
{
"name": "Project - all",
"cmd": ["nmake", "/NOLOGO", "/f", "Makefile", "VERBOSE=1", "all"],
"working_dir": "${file_path}",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$"
}
但是使用该file_regex根本不能使用我的错误行,而是需要使用类似的东西:
{
"name": "Project - all",
"cmd": ["nmake", "/NOLOGO", "/f", "Makefile", "VERBOSE=1", "all"],
"working_dir": "${file_path}",
"file_regex": "^([^(]+)\\((\\d+)\\):\\s*()(.*)$"
}
我的错误行如下所示:
D:\sources\personal\python\console\swig_tests\tutorial1\tutorial.cxx(11): error C2065: 'output_value': undeclared identifier
D:\sources\personal\python\console\swig_tests\tutorial1\tutorial.cxx(13): error C2065: 'output_value': undeclared identifier
D:\sources\personal\python\console\swig_tests\tutorial1\tutorial.cxx(15): error C2065: 'ret': undeclared identifier
那么,这是一个众所周知的问题/错误与CMake或我错过了什么?
答案 0 :(得分:1)
<强> result_file_regex 强> 一种Perl样式的正则表达式,用于从结果视图中捕获最多四个错误信息字段,即:文件名,行号,列号和错误消息。使用模式中的组来捕获此信息。文件名字段和行号字段是必需的。
它在文档中说“result_file_regex”,但这是错误的,构建“file_regex”的关键。
以下内容应与文件名和行号匹配:
"file_regex": "^([^\(]+)\(([0-9]+)\):.*$"
错误不显示列号。使列号可选:
"file_regex": "^([^\(]+)\(([0-9]+)\):([0-9]+)?.*$"
添加错误消息捕获组:
"file_regex": "^([^\(]+)\(([0-9]+)\):([0-9]+)? error (.*)$"
以下内容:
D:\sources\personal\python\console\swig_tests\tutorial1\tutorial.cxx(15): error C2065: 'ret': undeclared identifier
将匹配:
D:\sources\personal\python\console\swig_tests\tutorial1\tutorial.cxx
15
None
C2065: 'ret': undeclared identifier
正则表达式可能会更好,但这将适用于您所显示的所有类似错误消息。我希望我已经展示了足够的内容以适应其他错误格式或使其成为更常用的正则表达式。