Visual Studio支持CMake語法高亮和智能代碼補全

jopen 10年前發布 | 7K 次閱讀 Visual Studio

英文原文: Syntax Highlighting and IntelliSense support for CMake

        Visual Studio 對新編程語言的支持是非常強大的,但很少有人有能力并下決心去利用這個平臺。David Golub 卻是其中之一,他為 Visual Studio 帶來了對 CMake 的支持。

        Visual Studio 的 CMake 工具功能包括:

  • CMake 代碼語法高亮
  • 為 CMake 的命令和變量提供成員選擇列表框
  • 輸入 CMake 命令的時候會提示參數
  • CMake 代碼括號匹配
  • 支持插入 CMake 代碼片段(snippet)
  • 在 Visual Studio 的編輯器中,當光標位于一個標準的 CMake 命令或變量之上的時候,按下 F1 就可以得到基于上下文的幫助內容
  • 通過 Visual Studio 的 Tools 菜單就可以訪問 CMake 的圖形用戶界面和文檔

Visual Studio支持CMake語法高亮和智能代碼補全

        InfoQ:我們有些讀者不熟悉 CMake,你能告訴我們它是用來干什么的嗎?

        David Golub:CMake 是一個跨平臺的 makefile 生成工具,主要用于C和 C++ 編程。在各種操作系統中,有很多工具可以用于編譯C和 C++ 代碼,每種工具都有自己的 makefile 和項目文件格式。舉個例子,Windows 上的項目可能會使用 Visual Studio 的項目文件,而 Linux 項目則會使用 GNU makefile。CMake 提供了一種語言,開發者可以用它來定義項目的結構以及各種必要的配置步驟,它是跨平臺的。CMake 工具能處理這些代碼,根據程序的目標平臺,生成對應的 makefile 或項目文件。 在我剛剛開始為 Visual Studio 開發 CMake 工具的時候,我在 Organic Motion 工作,這家公司開發了 3D 動作捕獲系統 OpenStage 以及其他一些產品。雖然 OpenStage 只能在 Windows 上運行,但是代碼樹是用 CMake 來創建的,這樣既容易在將來需要的時候把代碼移植到其他平臺,也可以充分利用 CMake 的高級配置功能,這些功能在某些方面要比原生的 Visual Studio 項目文件更強大。

        InfoQ:你為 Visual Studio 開發 CMake 插件花了多少工作量?

        David:我為 Visual Studio 開發 CMake 工具前后大約花了一年時間,從 2012 年 4 月開始,到 2013 年 5 月發布第一個候選版本。我都是用晚上和周末的時間來完成這個項目的,鑒于我的工作職責所在,只有在這些時間我才有空。

        InfoQ:開發過程中有哪些方面比你預想的要簡單得多,或困難得多?

        David:Visual Studio 的 SDK 強大得不可置信,開發者可以利用它來為這個最佳 IDE 添加對任何編程語言的完整支持。但是,在有些情況下,SDK 的文檔還有點不足,要搞明白某些功能怎么用,必須要反復試驗幾次。舉個例子,在實現括號匹配的時候,Visual Studio 收到的范圍對象(span object)里面并不包含字符在文件中的索引號,卻包含了字符間空格的索引號。如果你嘗試通過構建一個范圍對象,指定相同起始和結束的索引號,來加亮單 個字符,那結果就是什么都沒加亮。弄明白 Visual Studio SDK 所有晦澀之處是最難搞的部分。

        InfoQ:這個插件的哪部分工作最難實現?

        David:為實現智能補全去解析代碼,和編譯器解析代碼是不一樣的。編譯器的目的是接受句法正確的代碼, 輸出可執行文件。如果被編譯的代碼有語法錯誤,編譯器會產生對應的錯誤信息并終止執行。而另一方面,智能補全必須在程序員輸入的時候就工作。在它被觸發的 任何時間點上,編輯器中的代碼都不大可能是一個句法上完全正確的程序。并且,智能補全的解析必須要很快才行。開發者希望他們輸入的瞬間就可以得到補全提 示。為了解決這些挑戰性問題,我編寫了一組解析函數,這些函數能解析各種智能補全觸發點需要的信息,卻不需要構建抽象的語法樹。

        David Golub 是 MangoDB 的工程師,在那里,他是 MongoDB 管理服務小組的成員,擔任 Windows 專家的角色。在來到 MangoDB 之前,他在耶魯大學和哥倫比亞大學學習了計算機科學,之后 2012 年到 2013 年之間在 Organic Motion 工作。他也同時管理著 Greater New York Roads 網站。他很喜歡徒步,喜歡走荒郊野路去探索各種有趣的地點。

來自: InfoQ
                    <span id="shareA4" class="fl">                             
                        </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!