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, поэтому вы можете использовать его $*для захвата всех аргументов ./configure. Согласноруководство по autoconfэто следует сделать сразу после AC_INIT, например:

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

Это будет #define CONFIG_FLAGSв config.h.

Связанный контент