本文介紹在Visual Studio中,通過屬性表,使得一個新建解決方案中的項目可以快速配置已有解決方案的項目中各類已編譯好的C++第三方庫的方法~ ...
本文介紹在Visual Studio中,通過屬性表,使得一個新建解決方案中的項目可以快速配置已有解決方案的項目中各類已編譯好的C++第三方庫的方法。
例如,我們現有一個解決方案,其中的一個項目需要調用Armadillo、OpenCV等多個不同的C++第三方庫;我們也已經在這一項目中配置好了所需的各個第三方庫,如下圖所示。
隨後,我們新建了一個解決方案,且這一解決方案中的一個新的項目需要同樣需要調用前述項目中Armadillo、OpenCV等多個不同的C++第三方庫。如下圖所示,由於此時我們還沒有對新的項目進行第三方庫的配置,因此在#include
代碼中會有報錯信息存在。
針對這一新的項目,我們可以參照文章如何在Visual Studio新C++項目中調用之前配置過的庫?中提及的方法,分別對新項目的附加包含目錄、附加庫目錄與附加依賴項等3個屬性加以配置。然而,這樣手動配置一次還好,如果今後還會有多個新的項目需要配置同樣的第三方庫,那麼每一次都手動配置就顯得十分麻煩。因此,我們可以藉助Visual Studio中的屬性表,完成這一操作。
首先,我們需要在原有的項目(也就是已經配置好各類第三方庫的項目)中,選擇“視圖”→“其他視窗”→“屬性管理器”選項,如下圖所示。
隨後,在“解決方案資源管理器”附近,找到“屬性管理器”,並雙擊項目名稱將其展開;隨後,基於我們代碼需要運行的環境屬性(比如Release
還是Debug
,Win32
還是x64
),將對應的屬性信息展開,並右鍵選擇“添加新項目屬性表...”。如下圖所示,我這裡因為希望在Debug
版本的x64
環境下運行代碼,因此就選擇在這一環境屬性信息對應處右鍵。
這裡再提一句,如下圖所示,我們也可以選擇直接在項目名稱處右鍵;但建議大家還是按照實際需求來。
這樣的話,通過我們後續的操作,就會在每一個環境屬性信息對應的欄目下出現屬性表;如下圖所示。
我們繼續前述操作。在選擇“添加新項目屬性表”後,會彈出“添加新項”視窗;我們在其中配置.props
格式的屬性表文件的名稱與保存路徑即可。
此時,就可以在Debug
版本的x64
環境對應的一項中,找到我們剛剛創建的屬性表,並雙擊。
隨後,即可彈出屬性表的屬性頁;如下圖所示。可以看到,其實這個屬性表的屬性頁就是我們常用的項目的屬性視窗。
此時我們要做的,就是將原有項目(也就是已經配置好各類第三方庫的項目)的附加包含目錄、附加庫目錄與附加依賴項等3個屬性,複製到屬性表的屬性頁中。這3個屬性的位置具體可以參考文章如何在Visual Studio新C++項目中調用之前配置過的庫?。
複製的時候這裡也有幾個小技巧。首先,我們可以在打開屬性表的屬性頁(或項目的屬性頁)時,通過切換“解決方案資源管理器”與“屬性管理器”的選中狀態,無縫切換兩個屬性頁視窗。
此外,我們可以在原有項目的附加包含目錄、附加庫目錄中,通過複製“計算的值”視窗中的內容,實現跨行批量複製,如下圖所示。
然後首先將其複製到文本文件、Word文檔文件等作為中轉,再將其逐行粘貼值屬性表的對應位置處;下圖即為複製後的屬性表的附加庫目錄。
而對於附加依賴項,由於其不是一行一行來設置的,因此複製起來就更快一些。
完成對附加包含目錄、附加庫目錄與附加依賴項等3個屬性的複製工作後,一定記得需要在屬性表名稱處右鍵,將其保存。
隨後,我們打開新的項目,也就是待配置第三方庫的項目,同樣打開“屬性管理器”。
隨後,在對應的環境屬性一欄中,右鍵並選擇“添加現有屬性表...”選項。
隨後,找到我們剛剛配置好的.props
格式的屬性表文件,並選擇。
此時,在新項目的屬性管理器中,就可以看到我們的屬性表已經導入了。但是,有時可能會出現如下圖所示的情況,即導入屬性表後,新的項目依然無法調用這些第三方庫。
並且此時雙擊打開屬性表的屬性頁,發現其中我們剛剛配置的附加包含目錄、附加庫目錄與附加依賴項等3個屬性都還是空白的。
針對這一情況,我們可以首先在新的項目中,在剛剛導入的屬性表名稱處右鍵並選擇“移除”;隨後,將這一新項目所在的解決方案關閉,並再一次在原有項目中保存屬性表;隨後,將原有項目所在的解決方案關閉,打開新的項目所在的解決方案,重新導入屬性表。一般情況下,新的項目就可以使用這些第三方庫了。
在今後若有其他新的項目需要配置這些第三方庫,我們就可以直接導入這一屬性表文件,從而實現快速的環境配置。
至此,大功告成。