2012-08-03 129 views
1

在我的公司,我們有一個大型的C++項目,可以使用各種預處理器定義來啓用或禁用多個功能。預處理器定義 - 提示構建?

如果我們列舉每個可能的預處理/特徵組合的項目配置列表,我們就會有自己一個相當廣泛的名單(更不用說長期配置的名字)!

是否有插件或其他未知功能可以在用戶啓動構建時顯示提示,以便用戶可以選中/取消選中可配置功能的列表以啓用或禁用預處理器定義?

像這樣的事情將是真棒:

enter image description here

+0

這對於Nightly Build來說是很討厭的。哪個開發人員要遲到? – MSalters 2012-08-03 14:31:29

+0

這是一個有效的點;它可能只有在項目配置設置爲「自定義」或類似的情況下才會顯示。 – BTownTKD 2012-08-03 14:47:29

回答

2

你可以創建一個簡單的應用程序,它會產生與定義

#ifndef __GEN_CONFIG__ 
#define __GEN_CONFIG__ 

#undef LOGGING 
#define LOGGING 1 // for example 

#undef FEATURE_A 
#define FEATURE_A 0 

#endif 

一個頭文件,則該頭可以被包含在項目。

應用/對話可以作爲一個Visual Studio Pre-Build event被執行,以確保該頭文件編譯前右更新。

+0

http://www.dotnetperls.com/post-pre-build-macros – 2012-08-03 14:18:27

+0

http://visualstudiohacks.com/general/customize-your-project-build-process/ – 2012-08-03 14:18:54

+0

我熟悉前期和後期工作,構建事件,但我不確定是否可以使用它們來修改預處理器定義。 如果您可以在預構建步驟中修改預處理器定義,那麼手動顯示Windows窗體提示並將結果傳輸到預構建步驟可能會非常困難。但說實話,我的問題實際上更多地是爲了找到一個可能已經存在的可配置插件,以避免所有這些額外的黑客入侵。 – BTownTKD 2012-08-03 14:25:44

0

我喜歡用CMake的正是這種任務。在CMakeLists.txt中,您可以使用命令set(<variable> <value> CACHE <type> <docstring>),該命令創建一個變量並將其放入具有給定文檔字符串的CMake緩存中。然後,您可以使用諸如ccmake之類的工具編輯這些值。如果您將值設置爲布爾值,則可以打開或關閉功能。

在Windows上,您可以查看並與gui,它類似於您曾經參與過這個問題對話框編輯緩存條目。

編輯:當您創建構建時,CMake不會彈出一個彈出窗口。相反,它會記住緩存中的變量。通常的方法是讓不同的版本具有不同的功能,例如,您可以在調試模式下創建一個具有所有功能的版本,另一個版本只具有最小功能設置等。

0

您可以檢查出我的分析工具,它是建立在項目中使用的所有預處理器的密鑰列表。 http://cdsan.com/Samp_CondParams.php

除了建立的名單本身它使那些PARAMS的分類。