[C++] 在Visual Studio工程中管理C++第三方庫


目前的項目依賴於很多第三方庫,每次要再一個新的環境編譯/運行,都要花很長時間先編譯/安裝各種第三方庫,而且會出現各種問題,因此決定將所有第三方庫編譯好之后,放入工程的子目錄中,以后就不用重復編譯了。

目錄結構

整理后的目錄結構如下:

一些設置

如此修改目錄結構之后,VS工程的一些設置需要進行修改,分別說明一下:

輸出文件的路徑

在工程屬性中 Configuration Properties > General > Output Directory 指定的是編譯出來的lib/dll/exe存放的路徑。

因為需要分平台,分Debug/Release版,所以用到了一些宏:

  • $(SolutionDir)表示solution所在的目錄,在這里就是src
  • $(Platform)是當前編譯的平台,win32/x64
  • $(Configuration)是當前編譯的版本,Debug/Release

修改頭文件和庫文件的包含目錄

相應修改一下就行,使用$(Platform)$(Configuration)這兩個宏,可以使各個平台/版本的配置都一樣,不需要分開配置。

具體想知道有哪些可以使用的宏,可以再任何一個edit窗口,點擊“Macro>>”按鈕,展開所有的宏查看。

指定dll所在目錄

最后這一條比較重要,因為現在所有第三方庫都不用安裝了,所以在運行程序的時候如何找到這些dll是一個問題。

exe在運行的時候找dll的順序如下,理論上把dll加到任何一個環節都可以:

  1. 應用程序所在目錄;
  2. 系統目錄。GetSystemDirectory返回的目錄,通常是系統盤\Windows\System32;
  3. 16位系統目錄。該項只是為了向前兼容的處理,可以不考慮;
  4. Windows目錄。GetWindowsDirectory返回的目錄,通常是系統盤\Windows;
  5. 當前目錄。GetCurrentDirectory返回的目錄;
  6. 環境變量PATH中所有目錄。

我們之前做了這么多事情,就是為了在新的環境中不需要做任何配置就能運行VS的工程,所以任何手動拷文件/修改環境變量的方式都不是最好的。

參考了這篇文章 http://my.oschina.net/u/243648/blog/62847,因為我們的dll分散在很多個文件夾中,最后采取的方法是將這些目錄都加到環境變量PATH中,當然不是手動添加,而是加到VS的配置中。

在工程屬性中 Configuration Properties > Debugging > Environment 可以添加在VS中運行程序需要添加的一些環境變量,僅對當前工程有效。我們把所有第三方庫的路徑加進去就行了,注意一定要用相對路徑,否則換一台機器還是不能用。這里有個潛在的危險,如果你的系統里面已經裝了這個第三方庫,並且加到了上面6個環節中的任意一個,可能會引起一些錯誤。

另外如果出build的話,就需要另寫一個腳本,將需要用到的第三方dll和編譯出來的程序一起打包,這樣就行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM