autoconf は ./configure コマンドラインを config.h に保存します。

autoconf は ./configure コマンドラインを config.h に保存します。

一部のバイナリは、バイナリ内に構成に使用するコマンド ラインを保存します (保存するものは覚えていませんが、そうでない場合はソースを確認します)。configure.ac でマクロとして使用されるコマンド ラインを取得する方法はありますか?

例えば、次のようにコードをコンパイルすると、

./configure --foo bar CXX=g++

保存したい--foo バー CXX=g++config.hのマクロに追加して、バイナリでフラグを使って出力できるようにする

./myprogram -V
Version 1.0, compiled using: "./configure --foo bar CXX=g++"

答え1

configureは本質的にはM4マクロからブートストラップされたシェルスクリプトなので、 を使用して$*のすべての引数を取得できます./configureautoconf マニュアルこれを直後に実行する必要がありますAC_INIT。例:

AC_INIT([My Program], 1.0, ...)
config_flags="$*"
AC_DEFINE_UNQUOTED([CONFIG_FLAGS],["$config_flags"],[Flags passed to configure])

これは#define CONFIG_FLAGSconfig.h にあります。

関連情報