2010-01-22 65 views
1

我正在使用Visual Studio 2008.VC++項目從未更新

我有兩個項目的解決方案。一個生成一個DLL,這是我的「生產代碼」。另一個構建一個控制檯應用程序exe,這是我的單元測試套件。

對於我的單元測試項目,我已經列出了鏈接器輸入來自DLL的源模塊的名稱。也就是說,我在DLL項目中有一個DLLMain.cpp,在exe項目中有一個鏈接器輸入「DLLMain」。這使得exe可以鏈接DLL項目生成的obj文件,從而防止僅爲單元測試重新編譯這些模塊。 (節省大量的編譯時間。)

問題是因爲exe比obj的產生時間晚,並且由不同的項目產生,所以它的時間戳總是比obj的更新。所以當你嘗試運行或調試時,它總是說exe文件已經過時,需要重新編譯。

有沒有什麼辦法可以配置exe項目來忽略時間戳?或者有沒有其他的,也許更一般的解決方案,我沒有看到這裏?

+1

「問題在於,因爲exe的生成時間晚於obj,而且由不同的項目生成,所以它的時間戳始終是始終不變的比ob更新j's ...「 - 我認爲結論並不完全正確,如果構建正確,objs文件將永遠比.exe/.dll更早; objs比exe更新會表示需要重新鏈接;就像源文件比objs更新會表明需要重新編譯一樣。 – Ruddy 2010-01-23 00:51:45

回答

0

似乎你正在DLL的項目中創建foo.obj,鏈接DLL項目中的foo.obj以生成DLL,然後將foo.obj鏈接到EXE項目,而無需首先重新編譯它。

我從來沒有這樣做過,但我要檢查的第一件事是確保EXE項目和DLL項目中的中間目錄設置是相同的。

-1

去那個不需要進行單元測試項目
右鍵單擊它,然後按屬性
單擊配置管理器
使用第一個下拉列表
單擊確定
選擇添加一個新配置然後在配置屬性集「從構建中排除」設置爲是

+0

我不確定你的答案的目標是什麼......我不想要兩個獨立的構建目標。我想要一個構建我的生產DLL和我的單元測試的配置。我目前有這個,但單元測試項目永遠不會是最新的。 – gg3 2010-02-01 12:04:25