2008-09-05 114 views
3

當您爲編寫的應用程序使用或分發庫時,我很好奇每個人的做法。管理/使用具有調試版本和發佈版本的庫

首先,開發應用程序時,是否鏈接庫的調試版或發行版? (用於在調試模式下運行應用程序時)

然後,當您在部署之前以發佈模式運行應用程序時,您使用哪種庫版本?

如何執行您的調試和發佈版本的庫之間的切換?你是手工做的嗎,你使用宏還是其他什麼?

回答

3

我會首先確定從庫中需要什麼樣的要求:

  1. 調試/發佈
  2. Unicode支持
  3. 等等..

有了這決定你可以再爲您或其他圖書館用戶所需的每種組合創建配置。

編譯和鏈接時,保持該庫和可執行文件與所用配置保持一致非常重要,即在鏈接時不要混合使用版本&調試。 我知道在Windows/VS平臺上,如果調試&版本庫在可執行文件中混合,這可能會導致細微的內存問題。

正如Brian向Visual Studio提及的那樣,最好使用配置管理器來設置您希望如何構建每個配置。

例如,根據所構建的可執行文件,我們的項目需要以下配置纔可用。

  1. 調試+統一
  2. 調試+ ASCII
  3. 發行+的Unicode
  4. 發行+ ASCII

這個特殊項目的用戶使用配置管理器,以滿足他們與可執行的需求項目的可用配置。

關於宏的使用,它們廣泛用於實現編譯時間決策,以滿足需求,例如,如果函數的調試或發佈版本要被鏈接。如果您使用VS,您可以查看預處理器定義屬性以查看如何定義各種宏,例如_DEBUG _RELEASE,這是配置如何控制編譯的內容。

你使用什麼平臺來編譯/鏈接你的項目?

編輯:擴展您的更新評論..

如果配置管理器選項不可用,給你那麼我建議使用來自以下項目的性質:

  • 鏈接 - >附加庫目錄鏈接 - >輸入

使用宏$(ConfigurationName)與適當的庫配置鏈接,例如調試/發佈。

$(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.lib 
  • 生成事件自定義生成步驟配置屬性

執行從依賴項目所需要的庫文件(S)前(或後)的副本,以構建發生。

xcopy $(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.dll $(IntDir) 

$(ProjectDir)將被替換爲當前項目的位置和導致發生相對於當前項目的操作。 將使用宏$(ConfigurationName)代替當前選定的配置(默認爲DebugRelease),允許根據當前正在構建的配置來複制正確的項目。

如果您對項目配置使用常規命名約定,將會有所幫助,因爲您可以使用$(ConfigurationName)宏,否則您可以簡單地使用固定字符串。

0

我使用VS.我這樣做的方式是我需要通過項目參考的庫。基本上只是說在項目加載時在什麼文件夾中查找特定的庫。我將我的圖書館發展爲獨立於項目或儘可能重複使用。因此,他們都是他們自己的項目。所以我需要一個特定項目的庫,我在我的svn文件夾樹中的「src」文件夾下創建了一個「3rdParty」或「libs」文件夾。我傾向於只使用發佈的庫,但是當我遇到一些未知問題並想切換到調試時,我手動將「lib」文件夾中的調試版文件複製並重新加載項目。

我不確定我應該保持調試和發佈版本在我的svn樹。雖然他們是他們自己的項目,但將他們保留在另一個項目的svn樹中是不對的。在任何時候都可以再次建造它們。

然後我想找到一種讓開關更多的方法......嗯......基本上是自動的,如果你一會兒,但那不是我真正的意思。它只是覺得在發佈和調試之間手動切換文件是不對的。也許我還沒有找到它,但我想要的是一個選項,可以這樣做: 對於庫「stack.dll」查看「...... \ 3rdParty \」發佈和「... ... \ 3rdPartyD \「進行調試。

任何那些像我不知道的東西。你有什麼建議?記憶庫是外部項目。那裏建立的文件完全是其他地方。事實上認爲它是因爲你必須簽出另一個項目,構建它,並且複製構建的庫,如果你想要另一個副本。你如何設定?

相關問題