將編譯過的C++庫迅速部署在Visual Studio新專案中

疯狂学习GIS發表於2024-05-28

  本文介紹在Visual Studio中,透過屬性表,使得一個新建解決方案中的專案可以快速配置已有解決方案的專案中各類已編譯好的C++第三方庫的方法。

  例如,我們現有一個解決方案,其中的一個專案需要呼叫ArmadilloOpenCV等多個不同的C++第三方庫;我們也已經在這一專案中配置好了所需的各個第三方庫,如下圖所示。

image

  隨後,我們新建了一個解決方案,且這一解決方案中的一個新的專案需要同樣需要呼叫前述專案ArmadilloOpenCV等多個不同的C++第三方庫。如下圖所示,由於此時我們還沒有對新的專案進行第三方庫的配置,因此在#include程式碼中會有報錯資訊存在。

  針對這一新的專案,我們可以參照文章如何在Visual Studio新C++專案中呼叫之前配置過的庫?中提及的方法,分別對新專案的附加包含目錄附加庫目錄附加依賴項等3個屬性加以配置。然而,這樣手動配置一次還好,如果今後還會有多個新的專案需要配置同樣的第三方庫,那麼每一次都手動配置就顯得十分麻煩。因此,我們可以藉助Visual Studio中的屬性表,完成這一操作。

  首先,我們需要在原有的專案(也就是已經配置好各類第三方庫的專案)中,選擇“檢視”→“其他視窗”→“屬性管理器”選項,如下圖所示。

  隨後,在“解決方案資源管理器”附近,找到“屬性管理器”,並雙擊專案名稱將其展開;隨後,基於我們程式碼需要執行的環境屬性(比如Release還是DebugWin32還是x64),將對應的屬性資訊展開,並右鍵選擇“新增新專案屬性表...”。如下圖所示,我這裡因為希望在Debug版本的x64環境下執行程式碼,因此就選擇在這一環境屬性資訊對應處右鍵。

  這裡再提一句,如下圖所示,我們也可以選擇直接在專案名稱處右鍵;但建議大家還是按照實際需求來。

  這樣的話,透過我們後續的操作,就會在每一個環境屬性資訊對應的欄目下出現屬性表;如下圖所示。

  我們繼續前述操作。在選擇“新增新專案屬性表”後,會彈出“新增新項”視窗;我們在其中配置.props格式的屬性表檔案的名稱與儲存路徑即可。

  此時,就可以在Debug版本的x64環境對應的一項中,找到我們剛剛建立的屬性表,並雙擊。

  隨後,即可彈出屬性表的屬性頁;如下圖所示。可以看到,其實這個屬性表的屬性頁就是我們常用的專案的屬性視窗

  此時我們要做的,就是將原有專案(也就是已經配置好各類第三方庫的專案)的附加包含目錄附加庫目錄附加依賴項等3個屬性,複製到屬性表的屬性頁中。這3個屬性的位置具體可以參考文章如何在Visual Studio新C++專案中呼叫之前配置過的庫?

  複製的時候這裡也有幾個小技巧。首先,我們可以在開啟屬性表的屬性頁(或專案的屬性頁)時,透過切換“解決方案資源管理器”與“屬性管理器”的選中狀態,無縫切換兩個屬性頁視窗。

  此外,我們可以在原有專案的附加包含目錄附加庫目錄中,透過複製“計算的值”視窗中的內容,實現跨行批次複製,如下圖所示。

  然後首先將其複製到文字檔案、Word文件檔案等作為中轉,再將其逐行貼上值屬性表的對應位置處;下圖即為複製後的屬性表的附加庫目錄

  而對於附加依賴項,由於其不是一行一行來設定的,因此複製起來就更快一些。

  完成對附加包含目錄附加庫目錄附加依賴項等3個屬性的複製工作後,一定記得需要在屬性表名稱處右鍵,將其儲存。

  隨後,我們開啟新的專案,也就是待配置第三方庫的專案,同樣開啟“屬性管理器”。

  隨後,在對應的環境屬性一欄中,右鍵並選擇“新增現有屬性表...”選項。

  隨後,找到我們剛剛配置好的.props格式的屬性表檔案,並選擇。

  此時,在新專案的屬性管理器中,就可以看到我們的屬性表已經匯入了。但是,有時可能會出現如下圖所示的情況,即匯入屬性表後,新的專案依然無法呼叫這些第三方庫。

  並且此時雙擊開啟屬性表的屬性頁,發現其中我們剛剛配置的附加包含目錄附加庫目錄附加依賴項等3個屬性都還是空白的。

  針對這一情況,我們可以首先在新的專案中,在剛剛匯入的屬性表名稱處右鍵並選擇“移除”;隨後,將這一新專案所在的解決方案關閉,並再一次在原有專案中儲存屬性表;隨後,將原有專案所在的解決方案關閉,開啟新的專案所在的解決方案,重新匯入屬性表。一般情況下,新的專案就可以使用這些第三方庫了。

  在今後若有其他新的專案需要配置這些第三方庫,我們就可以直接匯入這一屬性表檔案,從而實現快速的環境配置。

  至此,大功告成。

相關文章