vs2017 linux 編譯輸出改成 vs 格式
阿新 • • 發佈:2018-11-21
vs2017 linux 編譯輸出改成 vs 格式
(金慶的專欄 2018.11)
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
gcc2vs.py
功能:
將剪下板中gcc的編譯輸出格式轉成vs格式,用於vs跳轉到錯誤行。
vs2017 linux 編譯輸出為 gcc 格式,無法點選跳轉,如:
/var/tmp/src/db...e/Linux-Debug/Src/Team.cpp:16:1: 錯誤:‘x’不是一個型別名
須轉為vs格式, 如
/var/tmp/src/db...e/Linux-Debug/Src/Team.cpp(16):1: 錯誤:‘x’不是一個型別名
如何使用:
首先須安裝 python, 並安裝 pyperclip
pip install pyperclip
假設本檔案為 d:/tools/gcc2vs.py,
vs設定外部工具:工具->外部工具->新增
標題:gcc2vs(&V)
命令:python.exe
引數:d:/tools/gcc2vs.py
選中"使用輸出視窗"
參考:VS2010手動新增外部工具和快捷鍵
https://www.cnblogs.com/ChinaHook/p/4698733.html
當Linux構建輸出後,點選輸出視窗,ctrl-A 選擇全部,ctrl-C 複製輸出到剪下板,
然後 alt-T,V 執行新增的外部工具 gcc2vs(&V), 更改輸出格式,然後就可以點選錯誤跳轉了。
\'''
import re
import pyperclip
# 待替換的格式
pattern = re.compile(r'/var/tmp/src/........-....-....-....-............/Linux-Debug/(.*):([0-9]*):([0-9]*): ')
test_lines_src = '''
/var/tmp/src/db71a8ec-90bb-2838-98df-2dd35e71166e/Linux-Debug/003_servers/103_LobbyServer/Src/Team.cpp:16:1: 錯誤:‘x’不是一個型別名
生成失敗。
'''
test_lines_dst = '''
003_servers/103_LobbyServer/Src/Team.cpp(16):1: 錯誤:‘x’不是一個型別名
生成失敗。
'''
assert test_lines_dst == re.sub(pattern, r'\1(\2):\3: ', test_lines_src)
# 剪下板中的gcc格式輸出
src = pyperclip.paste()
# 轉成vs格式
dst = re.sub(pattern, r'\1(\2):\3: ', src)
print(dst)