Visual Studio管理C++第三方庫的解決方案

來源:互聯網
上載者:User

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

目錄結構

整理後的目錄結構如下:

一些設定

如此修改目錄結構之後,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加到任何一個環節都可以:

應用程式所在目錄;

系統目錄。GetSystemDirectory返回的目錄,通常是系統硬碟WindowsSystem32;

16位系統目錄。該項只是為了向前相容的處理,可以不考慮;

Windows目錄。GetWindowsDirectory返回的目錄,通常是系統硬碟Windows;

目前的目錄。GetCurrentDirectory返回的目錄;

環境變數PATH中所有目錄。

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

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

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.