2009-11-13 141 views
2

我的問題的簡短版本是如何更改我的解決方案中項目的構建順序,而不必強制將一個項目設置爲另一個項目的依賴項?Visual Studio 2005項目構建順序不使用項目依賴項

在我的解決方案,我有2個項目:

1)用C語言編寫
2)含有使用可愛的框架單元測試靜態庫的可執行文件。

我有4種生成配置:

1)調試 - 我想只有在調試模式下的exe。靜態lib項目是未選中的,所以它不會生成。
2.)發佈 - 我只想要exe在發佈模式。靜態lib項目是未選中的,所以它不會生成。
3.)使用單元測試進行調試 - 需要構建靜態庫,然後是exe,因爲它依賴於這種情況下的lib。
4.)發佈單元測試 - 同上#3,只是在發佈。

因爲可執行文件不依賴於解決方案中的其他libs和dll,所以在鏈接器設置中列出了所有這些附加依賴項。在單元測試構建配置中,我已將靜態庫也包含在可執行文件的依賴列表中。

現在,這是蹭。到目前爲止,我發現修改構建順序並確保靜態庫是在exe之前構建的唯一方法是右鍵單擊解決方案並選擇構建順序。在那個對話框中,它說我必須使用依賴關係選項卡來更改構建順序。這是有道理的。但是,如果我將可執行文件標記爲依賴於靜態庫,它會自動添加靜態庫作爲可執行文件的鏈接器依賴項。這對於單元測試版本配置很好。然而,在非單元測試版本配置中,它會嘗試鏈接到靜態庫中,如果在構建之前完成了清理,它已經被刪除並且無法鏈接,因爲我沒有將它構建到那些庫中配置(我也不希望它在這些情況下鏈接)。

這樣說,有沒有辦法改變構建順序而不標記依賴關係?我想要設置單元測試配置的構建順序,以確保靜態庫是先構建的。

回答

3

您可以禁用自動列入庫的依賴關係。

在你的exe文件的屬性頁:

鏈接器 - >常規 - >鏈接庫的依賴 - >無

這允許你指定項目的依賴關係,因此沒有被鏈接的靜態庫構建順序

+0

非常感謝。我之前沒有注意到這個設置。這是完美的。 – 2009-11-13 19:01:01

+0

如何在VS2013中找到鏈接器選項? – CamHart 2016-02-08 21:58:27

1

我會看看NAnt。建立一個ant腳本來解決你的問題是可能的。

http://nant.sourceforge.net

+0

我發現NAnt是一個選項,但是由於目前沒有在我的團隊中使用它,因此如果以後需要在此項目中工作,則會強制團隊的其他成員進行安裝。我肯定會看看它,因爲它看起來很有幫助。 – 2009-11-13 19:04:07

0

'Per configuration dependencies'可能是一個答案。它將允許指定該lib是可執行文件的依賴項,僅用於配置,這是有意義的。

+0

你的建議正是我想要的,但我還沒有看到在每個配置中設置VS之間的項目間依賴關係的方法。這就是爲什麼我把所有的libs/dll放在每個配置的Linker-> Input-> Additional Dependencies上。上面的Soo Wei Tan的建議在這個設置中很有效。 – 2009-11-13 19:08:11

相關問題