vs2017 linux 編譯輸出改成 vs 格式
(金慶的專欄 2018.11)
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 '''
5 gcc2vs.py
6
7 功能:
8 將剪切板中gcc的編譯輸出格式轉成vs格式,用于vs跳轉到錯誤行。
9 vs2017 linux 編譯輸出為 gcc 格式,無法點擊跳轉,如:
10 /var/tmp/src/db
e/Linux-Debug/Src/Team.cpp:16:1: 錯誤:‘x’不是一個類型名
11 須轉為vs格式, 如
12 /var/tmp/src/db
e/Linux-Debug/Src/Team.cpp(16):1: 錯誤:‘x’不是一個類型名
13
14 如何使用:
15
16 首先須安裝 python, 并安裝 pyperclip
17 pip install pyperclip
18
19 假設本文件為 d:/tools/gcc2vs.py,
20 vs設置外部工具:工具->外部工具->添加
21 標題:gcc2vs(&V)
22 命令:python.exe
23 參數:d:/tools/gcc2vs.py
24 選中"使用輸出窗口"
25
26 參考:VS2010手動添加外部工具和快捷鍵
27 https://www.cnblogs.com/ChinaHook/p/4698733.html
28
29 當Linux構建輸出后,點擊輸出窗口,ctrl-A 選擇全部,ctrl-C 復制輸出到剪切板,
30 然后 alt-T,V 運行添加的外部工具 gcc2vs(&V), 更改輸出格式,然后就可以點擊錯誤跳轉了。
31 '''
32
33 import re
34 import pyperclip
35
36 # 待替換的格式
37 pattern = re.compile(r'/var/tmp/src/
..-
.-
.-
.-


/Linux-Debug/(.*):([0-9]*):([0-9]*): ')
38
39 test_lines_src = '''
40 /var/tmp/src/db71a8ec-90bb-2838-98df-2dd35e71166e/Linux-Debug/003_servers/103_LobbyServer/Src/Team.cpp:16:1: 錯誤:‘x’不是一個類型名
41 生成失敗。
42 '''
43 test_lines_dst = '''
44 003_servers/103_LobbyServer/Src/Team.cpp(16):1: 錯誤:‘x’不是一個類型名
45 生成失敗。
46 '''
47 assert test_lines_dst == re.sub(pattern, r'\1(\2):\3: ', test_lines_src)
48
49 # 剪切板中的gcc格式輸出
50 src = pyperclip.paste()
51 # 轉成vs格式
52 dst = re.sub(pattern, r'\1(\2):\3: ', src)
53 print(dst)
54
2 # -*- coding: utf-8 -*-
3
4 '''
5 gcc2vs.py
6
7 功能:
8 將剪切板中gcc的編譯輸出格式轉成vs格式,用于vs跳轉到錯誤行。
9 vs2017 linux 編譯輸出為 gcc 格式,無法點擊跳轉,如:
10 /var/tmp/src/db

11 須轉為vs格式, 如
12 /var/tmp/src/db

13
14 如何使用:
15
16 首先須安裝 python, 并安裝 pyperclip
17 pip install pyperclip
18
19 假設本文件為 d:/tools/gcc2vs.py,
20 vs設置外部工具:工具->外部工具->添加
21 標題:gcc2vs(&V)
22 命令:python.exe
23 參數:d:/tools/gcc2vs.py
24 選中"使用輸出窗口"
25
26 參考:VS2010手動添加外部工具和快捷鍵
27 https://www.cnblogs.com/ChinaHook/p/4698733.html
28
29 當Linux構建輸出后,點擊輸出窗口,ctrl-A 選擇全部,ctrl-C 復制輸出到剪切板,
30 然后 alt-T,V 運行添加的外部工具 gcc2vs(&V), 更改輸出格式,然后就可以點擊錯誤跳轉了。
31 '''
32
33 import re
34 import pyperclip
35
36 # 待替換的格式
37 pattern = re.compile(r'/var/tmp/src/









38
39 test_lines_src = '''
40 /var/tmp/src/db71a8ec-90bb-2838-98df-2dd35e71166e/Linux-Debug/003_servers/103_LobbyServer/Src/Team.cpp:16:1: 錯誤:‘x’不是一個類型名
41 生成失敗。
42 '''
43 test_lines_dst = '''
44 003_servers/103_LobbyServer/Src/Team.cpp(16):1: 錯誤:‘x’不是一個類型名
45 生成失敗。
46 '''
47 assert test_lines_dst == re.sub(pattern, r'\1(\2):\3: ', test_lines_src)
48
49 # 剪切板中的gcc格式輸出
50 src = pyperclip.paste()
51 # 轉成vs格式
52 dst = re.sub(pattern, r'\1(\2):\3: ', src)
53 print(dst)
54