2010-04-22 25 views
3

可以說我有: 稱爲「LIB」 稱爲「LIBAPP」 稱爲「APP」 稱爲應用項目的應用項目中的應用程序項目的靜態庫項目「APPTEST」的Visual Studio:鏈接可執行

當我將「LIB」添加到LIBAPP項目依賴項時,Visual Studio會自動將「LIBAPP」鏈接到LIB。 但是,當我將APP添加到APPTEST項目依賴項時,它沒有。

,因爲我在做APP在APPTEST類的單元測試,我必須對APP鏈接,因此我目前手動連接對APP的所有* .OBJ文件(數百...)

,因爲我有每次我從APP添加或刪除* .cpp文件來更改APPTEST的鏈接目標,這不是一個很好的解決方案。

那麼有沒有辦法強制Visual Studio爲我自動執行此操作,就像添加靜態庫Project Dependency時一樣?

+0

什麼版本的VS? – 2010-04-22 16:51:46

+0

VS2005&VS2008 – smerlin 2010-04-22 17:28:56

回答

1

正如你發現的,你不能「鏈接到APP」。

一種解決方案是將所有APP的代碼放入其自己的庫中,將APP作爲單個源文件在該庫中運行一個函數。您可以使APPTEST成爲與新APP庫鏈接的另一個單一源文件。

0

使應用程序依賴於另一個應用程序有助於在您點擊編譯時導致兩個應用程序都被構建(如果需要)。如果你在APP中有足夠的代碼,你覺得你需要爲它們編寫單元測試,我認爲最好把這些代碼分解到另一個庫中,並稱之爲「LIBAPPUTIL」或者其他一些代碼,這取決於LIB和APP將不得不依賴於LIB和LIBAPPUTIL。

你有崇高的意圖。通過將LIBAPP的部分到一個單獨的圖書館,你會得到一堆的好處:

  • 可以構建具有LIBAPP的變化不同無效的主要()■
  • 你可以多建幾個LIBAPPUTILs,每個測試不同組相關代碼的使用情況。
  • 您可以有不依賴於LIB的LIBAPPUTIL的替代實現。如果你對如何使用接口類型(C++虛擬或C結構充滿了函數poointers)很熟悉,你可以完全抽象出APP對LIB的依賴。