2012-02-24 43 views
1

是否有相當於在Makefiles上工作的unifdef program?我想自動從Makefiles以及源文件中刪除某些功能。我會認爲這兩個人會齊頭並進,但到目前爲止,我似乎無法找到任何東西。unifdef for Makefiles?

+0

'unifdef'?你的意思是'#undef'?此外,可能重複[可以使undefine變量?](http://stackoverflow.com/questions/1473250/can-make-undefine-a-variable) – 2012-02-24 15:31:37

+0

你必須給我們一個更清晰的概念,如果我們有任何幫助你的機會,我們正試圖去做。你想從源文件列表中刪除一些成員?未定義變量?從'include'd makefile中取消激活規則? – Beta 2012-02-24 15:58:41

+0

unifdef是修改C代碼的程序。它刪除或留下由#if表達式保護的代碼部分。因此,例如,您可以告訴它YYY未定義,並且它將刪除由「#if defined(YYY)&& defined(XXX)... #endif」(包括#if和#endif)保護的代碼塊。 。我想要的是一個程序,它可以在makefile上運行ifeq(YYY,)和Makefile中的語句。 – John 2012-02-28 16:17:38

回答

1

unifdef程序已經在makefiles(或任何其他文本文件)上工作,注意,由於#ifdef#endif語句將被視爲make的註釋,所以「raw」文件將通過所有的statemens 。我在makefiles上使用unifdef主要是爲了以下目的:在我的代碼中,我有塊僅用於開發,並且出於馬虎或可能危險的原因,我不想在發佈的代碼中使用這些塊。通過在源代碼和makefile上使用unifdef,我可以從我的開發代碼中獲得可發佈的代碼庫,而無需通過開發代碼與公共分支或類似程序同步。我也可以使用unifdef來獲取代碼,包括構建腳本和makefile,針對不同的平臺或使用這種方法的受衆,但是因爲#ifdef語句被解析爲註釋,使用例如。 #else可能有點棘手,這種技術的高級應用可能會很快變得難以維護。

+0

我最終編寫了一個解析註釋的腳本。它最終需要更強大一點,所以我不能只使用unifdef。我會將其標記爲已接受,因爲它是正確的。 – John 2015-04-28 20:44:50