2012-01-27 22 views
2

我完全困惑,嘗試了很多方法來測試它,但它仍然是瘋了。
我想定義一個C預處理器變量「DEBUG」(#define DEBUG)來激活一個開源項目中的調試日誌記錄,它使用GNU Autotools。所以我把行GNU Autotools:AC_DEFINE不起作用

AC_DEFINE(DEBUG, 1, [My description for DEBUG]) 

configure.ac

但是什麼? 再生config.h中

autoheader && ./config.status 

我看的config.h的內容和看到這

/* My description for DEBUG */ 
/* #undef DEBUG */ 

到底什麼在這裏發生後?其他類似的C預處理器變量(項目)也以相同的方式定義。他們都出現了「#define」,並且沒有註釋,爲什麼我的成爲「#undef」,並且註釋掉了?
所以我嘗試了很多方法來做到這一點,不僅僅是這樣,我模仿了項目中其他符號的定義方式。嘗試各種各樣的,從1到TRUE,FALSE,各種變量,從「DEBUG」到「FOOBAR」,「KJJJ」....但它仍然是這樣工作的,我完全沮喪。


更多信息:

當看着config.h.in,我看到所有的線條都是這樣:

#undef SOMEVARIABLE 

(包括我的定義和的那些#config.h。)

當我不跑autoheader就,只是改變我的config.h.in變量的行

#define DEBUG 

然後生成的config.h,那麼我的DEBUG變量出現有效#define'd在config.h中

* Autoconf的版本2.67
*我工作的這個項目是ibus

+1

如果你只是想定義它來激活調試,你不需要編輯configure.ac。只需運行配置CPPFLAGS = -DDEBUG – 2012-01-27 16:33:38

回答

3

運行autoheader修改config.h.in,但不是config.statusconfig.status不知道您對configure.ac所做的更改,並且不知道要替換DEBUG。它將不會更新,直到您運行autoconf和由此產生的configure腳本。

2

只需使用autoreconf而不是手動調用autoconfautomake等。

+0

我已經嘗試過了,只是在這裏討論config.h,每次修改configure.ac都會更改它。 – perfwill 2012-01-27 13:45:51

+0

實際的問題是,有一個停止autoreconf的錯誤。對不起。 – perfwill 2012-01-28 01:51:36

1

請在AC_OUTPUT之前放置行AC_DEFINE