1. 程式人生 > >vs2017 linux 編譯輸出改成 vs 格式

vs2017 linux 編譯輸出改成 vs 格式

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)