0

我與一個相當大的團隊,我們遇到了其他我們依賴的庫的問題,並獲得相同的項目文件爲每一個工作。組織項目依賴關係

問題是,許多人有同一個庫的多個版本(例如,項目用戶增加1.36,我使用增強1.39爲我的其他東西),並且每個開發人員都在不同的地方(例如我使用C:\ lib \ C++ \ boost_1_36)。

因此,現在所有開發人員都必須爲每個項目「其他包含目錄」和「其他庫目錄」添加相當多的條目,這很痛苦,尤其是嘗試獲取新成員集(例如,確保爲每個配置鏈接正確的靜態/動態依賴關係,這對大多數庫使用所有.lib和.dll文件的通用名稱會變得更糟,而不是說如何對文件進行增強名稱反映配置和自動鏈接)。

我正在考慮使用項目屬性中的宏,例如「Additional Include Directories」中的「$(MYSQL_HOME)\ lib \ opt」,但是我不能看到一種方法來定義我自己的(如MYSQL_HOME))

回答

2

您可以使用property sheets來幫助管理依賴項和其他常用項​​目設置。屬性表還允許你定義user-defined macros,這是你需要做什麼來定義你自己的宏,如MYSQL_HOME

+0

這就是我想要的 – Tom 2009-11-01 20:29:50

+2

除了像'BOOST_DIR'和其他環境變量之外,您應該努力統一所有開發人員使用的環境。這使得更容易設置自動構建,新工作站以及讓新開發人員開始工作。 – MP24 2009-11-02 16:02:03

1

有些人可能會建議插件「解決方案構建環境」。正如詹姆斯所說,我建議你不要使用它 - 使用屬性表。原因避免解決方案構建環境:

  1. 它不具有批量建造工作 - 它使用環境從目前的配置來構建整個批次,這將導致不正確的編譯器/連接標誌和硬TO-跟蹤構建錯誤(因爲如果一次構建一個配置,則問題不會顯示)。
  2. 它強制第三方依賴於您的用戶。有人需要安裝此附加組件才能與您的項目一起構建。
  3. 它根據解決方案而不是按項目而變化。這意味着,其他人可能會將項目作爲依賴項引入,但不會自動引入項目所需的所有環境設置。
  4. 很難追蹤設置的來源。屬性表集成到GUI中,並且相當容易瀏覽。另一方面,另一方面,.slnenv文件沒有集成IDE,所以更改將更難追查。
  5. 屬性表可以定義如此多的特定設置,以使任何給定的.vcproj文件中的實際設置爲空。我在屬性表中定義了所有的設置,然後單個項目只需要定義它們繼承的屬性表。因爲解決方案構建環境只定義了環境變量(MS稱之爲「宏」),所以項目文件仍然會被設置混亂,即使它們都只是指向那些環境變量。這是一團糟。