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 매크로에서 부트스트랩된 쉘 스크립트이므로 $*이를 사용하여 ./configureFollow를 얻을 수 있습니다.자동 구성 매뉴얼이 작업은 직후에 수행해야 합니다 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에 있습니다.

관련 정보