2011-03-17 79 views
4

說我有在Visual Studio 2008中的C++項目,它的編譯取決於許多的配置設置。例如,我有可選的預處理器定義WITH_MYLIB和修改代碼的EXPERIMENTAL。添加的Makefile樣條件邏輯Visual Studio的構建系統

有MyLib中希望使用具有WITH_MYLIB中的預處理器定義列表中的項目配置進行編譯,並添加庫到包括/鏈接設置的用戶。想要啓用實驗性功能的用戶需要爲預處理器定義添加EXPERIMENTAL。但是,除了這些變化,項目配置的其餘部分應主要相同

我試圖避免創建項目配置的「指數」數來處理所有的可能性,也就是我不希望有

  • 調試
  • Debug_WithMyLib
  • Debug_WithMyLib_Experimental
  • Debug_Experimental
  • ... 4更多for Release ...

因爲這裏的冗餘量巨大。

使用Makefile文件,這將是很容易的,因爲生成文件將使用一個「if」語句,以增加必要的編譯器標誌,留下其餘的配置之間是相同的。

我知道構建系統,如CMake,SCons等,我意識到他們可能會解決我的問題。

我的問題是,是否有任何合理的方法來實現這個視覺工作室的構建系統。如果這是某種聯繫是出現在視覺效果工作室選擇「從父​​或項目的默認繼承」,也許有人能向我解釋如何母公司和其默認設置/改變。

謝謝。

回答

3

有一個名爲「屬性表」的功能,可以準確解決你想要的功能。您只需將新的屬性表添加到您的項目並將其添加到您的項目。在屬性表中完成的設置將在每個項目中繼承。所以你可以簡單地在一個地方定義你想要的文字,並影響整個項目。

查看Visual Studio「查看」菜單中的「Property Manager」。

MSDN鏈接http://msdn.microsoft.com/en-us/library/a4xbdz1e(v=vs.80).aspx

+0

另一個有用的功能:屬性表可以相互繼承,所以如果你要打開和關閉的設置更復雜的多單預處理宏,您可以將它們分組到一個單獨的屬性根據需要由全局屬性表繼承或不繼承。 – slowdog 2011-03-17 18:24:41