2010年8月3日 星期二

[C++ 程式設計]Visual Studio 專案精靈

今天介紹 Visual Studio 的「Custom Wizard」,許多人會稱呼他為專案精靈,在此我也以專案精靈稱呼。

撰寫一些程式時,發現建構專案的過程大多步驟都千篇一律但卻又十分繁瑣,每當要建立類似的專案時,前期的準備工作總是令人感到特別痛苦。不過令人慶幸的,專案精靈是一個建立同性質專案的好幫手。舉了例子,我常撰寫簡單的 3D 應用程式,因此我需要用 Win32 視窗程式設計與 OpenGL 等 3D 繪圖 API 來開發程式,但光是一個簡單的視窗開啟與前期的初始化工作就得寫上數百行的程式碼,而往往應用程式大多設定工作又大同小異,因此每要另開一新專案時,總令人感到痛苦萬分。

專案精靈的設計就是為了幫助大家更有效率的完成重複性如此高的程式,降低大家開發上的痛苦促使大家對於程式開發更有熱誠。我們可以用專案精靈設計最常被使用的程式框架,已上述狀況為例,我們可以建立一個叫做「OpenGLAppWizard」的專案,定義基本 OpenGL + Win32 的 3D 視窗程式框架,有了框架之後僅需修改真正有差異的地方,真的非常方便。

關於如何設計新的專案精靈,已下提供數個連結供參考:
1. http://www.codeguru.com/cpp/v-s/devstudio_macros/customappwizards/article.php/c12775__1/Create-a-Visual-C-Wizard-for-Visual-Studio-2005.htm
2. http://www.codeproject.com/KB/codegen/CustomWizard.aspx

建立新的專案精靈後,可看到數個不同副檔名的檔案。
.vsz:用來定義精靈的屬性,透過參數的設定影響使用時專案建立的過程與細節。
.vsdir:用來尋找專案精靈,並將其顯示於新增專案的對話框中。
.htm:定義專案精靈的使用者介面(UI),可以定義多個頁面。
.js:為建立專案的腳本,可與 Visual C++ Wizard 與定義的 Environment Object Models 溝通。
 templates:含括所有自動產生檔案的範本,例如.cpp、.h、.txt。
 Templates.inf:定義哪些範本可被自動產生,可在專案建立過程指示產生哪些範本。
 http://msdn.microsoft.com/en-us/library/3010zc6t.aspx

使用者介面的設計是完全採用HTML語法,請參閱http://www.w3schools.com/html/default.asp

範本指示(Template Directives)
範本指示是一種簡單的邏輯與取代指令,主要目的是讓專案精靈在不同的選項下產生不同的結果,例如選擇性的檔案建立與檔案內容的變更。因此範本指示功能可以在 Templates.inf 與 templates 的所有檔案都可使用。( http://msdn.microsoft.com/en-us/library/8x8by37d.aspx)

腳本語言
專案精靈設計中最具彈性的功能就是透過腳本語言(JScript)做操作,可以設計更為複雜、階層式的邏輯設計,並可透過腳本直接與 Visual C++ Object Models 溝通完成複雜工作。(http://msdn.microsoft.com/en-us/library/24c7e0e7.aspx)

Visual C++ Extensibility  Object Models
專案精靈的設計,我們需要更改所建立的專案內設定,例如最佳化、連結、除錯資訊等,因此 Visual C++ Extensibility Object Models 是另一個我們需要知道的議題。更多內容請參閱http://msdn.microsoft.com/en-us/library/174179de%28v=VS.71%29.aspx

沒有留言:

張貼留言