2012-01-27 20 views
2

私は完全に混乱しています。それをテストする方法は多岐にわたりますが、それはまだ狂っています。
オープンソースプロジェクトでデバッグログを有効にするために、Cプリプロセッサ変数 "DEBUG"(#define DEBUG)を定義しようとしていますが、GNU Autotoolsを使用しています。だから私はconfigure.acGNU Autotools:AC_DEFINEは機能しません

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

ラインを置きます。

しかし何ですか? はconfig.hの

autoheader && ./config.status 

を再生した後、私はconfig.hの内容を見て、一体ここで何が起こったこの

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

を参照してください?他の同様のCプリプロセッサ変数(プロジェクトによる)も同様に定義されています。彼らはすべて "#define"と表示され、コメントがなく、なぜ私の "#undef"になりコメントアウトされましたか?
私はそれを行うために多くの方法を試しました。この方法だけでなく、プロジェクトの他のシンボルが定義されている方法を模倣します。 の値、1から真、偽、すべての変数から、 "DEBUG"から "FOOBAR"、 "KJJJ"までのすべての種類のものを試してみました....しかし、それはまだそれのように動作します、私は完全に挫折しています。


さらに詳しい情報:

config.h.inを見たとき、私は全ての行は次のようにしている参照してください。

#undef SOMEVARIABLE 

(私の定義し、いるものも含めて有効に表示される#config.hに#defined'd。

私はautoheaderはを実行し、ちょうどconfig.hのを生成し、その後

#define DEBUG 

にconfig.h.inに私の変数の行を変更しない場合は、その後、私のDEBUG変数が#define'd有効に表示されますconfig.hの

* Autoconfのバージョン2.67
*に私が働いているプロジェクトがibus

+1

デバッグを有効にするためだけに定義する場合は、configure.acを編集する必要はありません。ちょうどCPPFLAGS = -DDEBUGでconfigureを実行してください –

答えて

3

autoheaderを実行するとconfig.h.inが変更されますが、config.statusは変更されません。 config.statusは、あなたがconfigure.acに行った変更を知らず、DEBUGの代用を知らない。 autoconfとその結果のconfigureスクリプトを実行するまでは更新されません。

2

単にを使用しています手動でautoconf,automakeなどと呼ぶ代わりに、3210を使用してください。

+0

私はすでにこれを試しましたが、ここでconfig.hについて話しています。configure.acを変更するたびに変更されています。 – perfwill

+0

実際の問題は、autoreconfを停止するエラーがあったことです。そのために残念。 – perfwill

1

AC_OUTPUTの前に置いてください。

関連する問題