3

我遇到了Visual Studio 2012的問題,我希望有解決方案。我在我的解決方案中有2個項目:1個項目是「.exe」項目,另一個是「.lib」項目。我已經在exe項目中添加了lib項目作爲參考,並且確保它計劃首先編譯。 lib項目有一堆附加的包含目錄和一堆附加的依賴項和鏈接庫。 lib項目編譯得很好。但是,exe應用程序並沒有繼承其他包含目錄或附加庫目錄或依賴關係。我能夠通過將配置複製到exe項目來解決這個問題,但這意味着如果我更新了lib依賴項,那麼我需要在每個使用此庫的項目中更新它(我將這個庫用於多個項目)。這似乎是應該有解決方案的東西,但我似乎無法找到它。有沒有人想出了讓項目繼承引用項目配置的方法,或者沒有辦法解決這個問題嗎?謝謝。來自Visual Studio 2012中的外部項目的配置

+0

靜態庫和使用它的項目之間的設置通常沒有太多重疊。靜態庫項目需要編譯器設置,例如實現中使用的其他庫的包含文件。可執行文件需要連接器設置,例如庫文件的路徑以及庫的公共包含目錄。庫的實際名稱可以使用'#pragma comment(lib)'指定。當然,如果在許多應用程序中使用圖書館的所有消費者之間存在重疊,那麼共享財產表仍然是值得的。 – 2013-09-09 22:05:21

回答

7

你說得對,項目不會繼承他們引用的其他項目的屬性。要解決您的問題,您需要的是屬性表。屬性表是與項目分離的屬性集合(就像您在項目屬性中設置的那樣)。您可以將單個屬性表應用於許多項目。

就你而言,「附加庫依賴關係」和「附加包含目錄」將被放置到屬性表中。該物業表將應用於您的.exe項目和.lib項目。當您進行更改時,您將使其進入屬性表,兩個項目都會看到更改。

讓我們一步步地設置一個屬性表來做你想做的。

  1. 用您的.exe.lib項目加載您的解決方案文件。假設您的庫的名稱是PowerMath.lib,並且您的主要可執行文件是SuperCalc.exe
  2. 在Visual Studio中查找解決方案資源管理器窗口。這是列出所有項目的子窗口以及這些項目中的文件。 (如果沒有,請點擊查看菜單,然後選擇解決方案資源管理器選項來創建一個。)
  3. 首先,讓我們現在設置的項目屬性,您現在設置它們。轉至PowerMath.lib項目的項目屬性(在解決方案資源管理器中右鍵單擊該項目,然後從上下文菜單中選擇「屬性」)。查找您所做的「附加庫依賴項」和「附加包含目錄」設置,並將其刪除。 (只刪除你的修改,而不是之前的修改。)(另外,寫下你的東西或將它複製到某個地方 - 它將在步驟10中回來。)當你完成PowerMath.lib項目時,重複這個過程SuperCalc.exe項目。徹底清除它,這樣就不會干擾我們要採取的新方法。確保你已經完成了項目的所有配置(調試和發佈,Win32和x64)。
  4. 在解決方案資源管理器窗口底部,您會看到多個選項卡,其中包括:解決方案資源管理器,類視圖和屬性管理器。如果窗口很小,這些可能會縮寫。點擊物業經理
  5. 在物業經理你會看到兩個條目:PowerMathSuperCalc項目名稱。右鍵單擊PowerMath.lib項目,然後選擇菜單選項添加新的屬性頁
  6. 選擇引用您的圖書館的好名字。我會建議PowerMath-settings.props。然後點擊添加創建屬性表,並自動將其附加到PowerMath .lib項目。
  7. 回到屬性管理器窗格中,您會看到PowerMath在其下面有兩個元素:調試版本。這些是您的圖書館的兩種配置。如果您通過用鼠標單擊它們來打開它們,您會看到PowerMath-settings屬性表已連接到兩種配置。
  8. PowerMath-settings屬性表上面列出了一堆已經存在的其他屬性頁,其名稱如Core Windows LibrariesUnicode Support所有您的項目的任何配置中的設置來自組合這些屬性表!這就是Visual Studio中的屬性工作原理 - 將所有項目的屬性表放在一起,以便將第一個屬性頁放在最下面。
  9. 雙擊列表中的PowerMath-settings屬性表。這將帶您到熟悉的項目屬性界面。此處所做的更改不適用於該項目內的項目或特定配置。相反,您只爲屬性頁PowerMath-settings.props寫入設置。
  10. 現在您可以編寫您的附加庫依賴關係其他包含目錄。轉到您希望設置這些內容的對話框。在相應的字段中,單擊字段右側的向下箭頭,然後選擇Edit...
  11. 在編輯框中,您將看到一個空白處,您可以在其中編寫新設置。 (您還會看到「繼承的值」,這是來自其他屬性頁的設置。)添加您的東西,然後單擊確定。
  12. 完成後,您將擁有一個名爲PowerMath-settings.props的屬性表,其中存儲了PowerMath.lib庫的所有用戶所需的設置。
  13. 現在回到Property Manager窗口。用鼠標右鍵點擊SuperCalc項目(這是你的.exe)。選擇菜單選項添加現有資產表。找到PowerMath-settings.props並選擇它。
  14. 繁榮,現在SuperCalc.exe獲取您剛創建的所有設置爲PowerMath.lib
  15. 要驗證這一點,請從屬性管理器切換回解決方案資源管理器(通過單擊子窗口底部的解決方案資源管理器選項卡)。轉到SuperCalc.exe項目的項目屬性。轉到「其他包含目錄」。點擊該字段左側的向下箭頭,然後選擇Edit...。你會看到你的屬性表設置被列爲「繼承值」。
  16. 有時,直到退出Visual Studio,重新啓動並重新加載解決方案後纔會應用全新屬性表的設置。請記住點擊YES當它詢問您是否要保存您的項目更改和新的屬性表!一旦完成設置,您就不需要再次執行此操作。

現在任何時候你有一個新項目使用PowerMath.lib,只需去物業經理和添加現有的屬性表:PowerMath-settings.props

請記住,對屬性表中的屬性所做的所有更改都必須通過屬性管理器對話框而不是使用PowerMath.lib項目屬性!項目屬性是一種「覆蓋」屬性表,只適用於一個特定的項目。它位於物業經理列出的所有物業表之上。

+0

多麼驚人的答案!非常感謝。 – aeskreis 2013-03-02 06:43:14

相關問題