天天看點

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

作者:瘋狂學習GIS

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

  例如,我們現有一個解決方案,其中的一個項目需要調用Armadillo、OpenCV等多個不同的C++第三方庫;我們也已經在這一項目中配置好了所需的各個第三方庫,如下圖所示。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  随後,我們建立了一個解決方案,且這一解決方案中的一個新的項目需要同樣需要調用前述項目中Armadillo、OpenCV等多個不同的C++第三方庫。如下圖所示,由于此時我們還沒有對新的項目進行第三方庫的配置,是以在#include代碼中會有報錯資訊存在。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  針對這一新的項目,我們可以參照文章Visual Studio調用配置好的C++庫的方法中提及的方法,分别對新項目的附加包含目錄、附加庫目錄與附加依賴項等3個屬性加以配置。然而,這樣手動配置一次還好,如果今後還會有多個新的項目需要配置同樣的第三方庫,那麼每一次都手動配置就顯得十分麻煩。是以,我們可以借助Visual Studio中的屬性表,完成這一操作。

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  随後,在“解決方案資料總管”附近,找到“屬性管理器”,并輕按兩下項目名稱将其展開;随後,基于我們代碼需要運作的環境屬性(比如Release還是Debug,Win32還是x64),将對應的屬性資訊展開,并右鍵選擇“添加新項目屬性表…”。如下圖所示,我這裡因為希望在Debug版本的x64環境下運作代碼,是以就選擇在這一環境屬性資訊對應處右鍵。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  此時,就可以在Debug版本的x64環境對應的一項中,找到我們剛剛建立的屬性表,并輕按兩下。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  此時我們要做的,就是将原有項目(也就是已經配置好各類第三方庫的項目)的附加包含目錄、附加庫目錄與附加依賴項等3個屬性,複制到屬性表的屬性頁中。這3個屬性的位置具體可以參考文章Visual Studio調用配置好的C++庫的方法。

  複制的時候這裡也有幾個小技巧。首先,我們可以在打開屬性表的屬性頁(或項目的屬性頁)時,通過切換“解決方案資料總管”與“屬性管理器”的選中狀态,無縫切換兩個屬性頁視窗。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  此外,我們可以在原有項目的附加包含目錄、附加庫目錄中,通過複制“計算的值”視窗中的内容,實作跨行批量複制,如下圖所示。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  而對于附加依賴項,由于其不是一行一行來設定的,是以複制起來就更快一些。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  随後,我們打開新的項目,也就是待配置第三方庫的項目,同樣打開“屬性管理器”。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  随後,在對應的環境屬性一欄中,右鍵并選擇“添加現有屬性表…”選項。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

  并且此時輕按兩下打開屬性表的屬性頁,發現其中我們剛剛配置的附加包含目錄、附加庫目錄與附加依賴項等3個屬性都還是空白的。

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

Visual Studio基于已有項目中編譯好的C++庫為新項目配置對應的庫

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

  至此,大功告成。

歡迎關注:瘋狂學習GIS

繼續閱讀