Visual Studio屬性配置中使用宏

在學習C語言的時候,我們曾經遇到過一個宏的概念。宏的作用機理本質上是宏的展開,C語言中的宏的用法也有很多種(水其實很深...),不過從感覺上來講,人們大致上會在以下的場景中,利用宏來解決一些窘境:一是爲了避免重複書寫同樣性質代碼時,會使用到宏;二是爲了定義一些常量參數時,會使用到宏。另外,宏的意義也在於,當我們修改某個宏的定義時,便修改了所有引用宏的地方所展開的代碼,這無疑節省了我們修改代碼的工作量以及代碼修改的靈活性。

      在Visual Studio中進行C++工程屬性的配置時,同樣也會遇到與寫代碼類似的場景,例如我們可能會在不同的表單(同一個工程或者多個工程)中,填寫相同的內容(例如某個路徑)。這樣就造成了一些重複性的勞動,而且填寫時可能因爲疏忽而造成錯誤,修改時也需要找到所有填寫這個內容的地方。爲了解決這個問題,Visual Studio在工程屬性配置時,也提供了宏這樣一個工具,來幫助我們減少這些無謂的辛勞。

      C++工程屬性中的宏

      工程屬性中的宏具體長得是什麼樣子呢?在打開工程屬性時,我們在表單中可能經常會看到一些以美元符號($)爲開頭的字符串,$(SomeMacro)。其實這些字符串便是Visual Studio中默認定義的一些宏,它們其實就是代表一些與某個工程相關的常量字符串。在下圖中我們可以看到一些這樣默認定義的宏:


      任意點擊一個表單,然後點擊Edit選項,便可以在彈出的窗口中,查看這些默認定義宏的含義。




      注意到上面兩個宏進行結合,對項目的輸出路徑(Output)進行了配置,也就是項目生成exe、lib或dll的地方。Visual Studio中還有很多類似這樣的宏,有些宏還是和機器相關的,所以我們也可以利用其來進行工程配置,避免因爲不同機器上路徑不同,而對每臺機器單獨配置一次屬性。對工程屬性中默認定義的宏,微軟的官方指南上也有一個比較詳細的介紹。

http://msdn.microsoft.com/en-us/library/c02as0cs.aspx

      自定義工程屬性中的宏

      那麼我們如何自己定義工程屬性中的宏呢?首先我們需要打開屬性管理器選項卡(Property Manager),然後爲工程添加一個屬性頁面(Property Sheet)。該屬性頁面在被添加後,會被當前的工程屬性繼承,於是便可以使用其中定義的宏了。






      以上添加了一個宏,代表使用OpenCV第三方庫的版本號,因爲在第三方庫升級時,庫的名字也會隨版本號發生改變;而使用了宏後,我們就可以很方便的修改引用庫的名稱了。下面我們可以回到原來的工程屬性當中來,利用上面的宏來動態確定引用庫的名稱。



      我們可以看到,Linker當中所展開的命令行參數中,$(OpenCVLibVersion)已經被展開爲245了。而以後在發生庫版本的升級時,便可以只修改$(OpenCVLibVersion)這個宏便可以正常使用升級後的庫了,所以這種方法還是很實用的吧。在工程屬性的配置中,宏的使用場景還有很多,如果能夠靈活使用,便可以節省很多的時間,避免很多因重複勞動所造成的錯誤。

轉載自:https://blog.csdn.net/q_l_s/article/details/51778688

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章