2011-01-31 12 views
1

./configureスクリプトに引数を渡すことができますので、私の生成されたヘッダーファイルに使用されるNDEBUGが追加されます。どうやってやるの?私のconfigureスクリプトはconfigure.acから生成されます。./configureで引数を渡して使用するには?

私はすでに1つの大きな答えですが、私の質問は間違っているようです。デフォルトでは、アサーションをオフにしたいので、このオプションはこのNDEBUGを削除する必要があります。 AC_UNDEFINEはありませんので、私はいくつかのトリックを使用する必要があります:ASSERT_ONを定義すると、NDEBUGが無効になります。より簡単で良い方法はありますか?

答えて

2

configure.acファイルでAC_ARG_ENABLE()マクロを使用して、誰かがコマンドラインオプションに--enable-fooを追加したときにアクションをトリガすることができます。

 
AC_ARG_ENABLE(foo, "used to turn on the NDEBUG flag", 
    [ AC_DEFINE(NDEBUG) ] 
) 
+0

。多分あなたはまたこれで私を助けることができますか? – gruszczy

+0

autoconf内で以前に設定された変数の設定を解除する場合は、変数名自体をオフにする必要があります。多分。単純なvarname = ""タイプの設定で無効にできる可能性のある変数名のリストについては、config.cacheファイルを参照してください。 –

0

あなたのconfig.h.in(したがって、config.hファイル)への余分なデータを追加するためにAH_VERBATIMを使用することができます。

autoconfは、config.hファイルをテンプレートから生成するときに#undefというような文をコメントアウトします。

これを回避するプリプロセッサのトリックがあります。#/**/undef/**/を使用してください。 Cプリプロセッサは最初にコメントを取り除くつもりですが、autoconfはそれを#undefというステートメントとしては見ません。 NDEBUGを施行するために、要約すると

は、未定義さ:偉大な答えであると私は喜んで受け入れるだろうが、私の編集をご覧ください

AH_VERBATIM([NDEBUG], [/* Never ever ignore assertions */ 
#ifdef NDEBUG 
#/**/undef/**/ NDEBUG 
#endif]) 
関連する問題