2014-11-30 5 views
3

configure --help의 출력에 여러 번 사용하려는 문자열이 있습니다. 그래서 configure.ac이 같은 일을 시도 : 출력 그냥 $foobar_help_str 그래서autoconf : "configure --help"에 대한 변수 대체

AC_ARG_ENABLE([foobar], 
       AS_HELP_STRING([--enable-foobar], [$foobar_help_str])) 

은 그러나 더 확장 또는 대체가 수행되지 않습니다.

답변

1

M4 매크로와 같은 문자열을 정의 : 사용자가 생성 configure 스크립트를 보면 당신은 도움말 텍스트는 모두 인용에서 텍스트를 한 덩어리로 미리 포맷 된 것을 볼 수 있습니다,

m4_define([FOOBAR_HELP_STR], [Turn on the foobar features]) 
AC_ARG_ENABLE([foobar], [AS_HELP_STRING([--enable-foobar], FOOBAR_HELP_STR)]) 
1

참고 "여기 문서" (cat에 의해 stdout으로 전송 됨) 즉, 스크립트가 실행될 때 (즉, ./configure --help으로 실행할 때) 어떤 형태의 대체가 수행 될 가능성은 없습니다. 이것이 버그라고 주장 할 수는 있지만, 다른 한편으로는 autoconf에 의해 수행 된 처리가 최종 스크립트의 실행 방법에 대한 지식이 없어도 도움이됩니다. 따라서 어떤 변수가 무엇인지 모릅니다 집합과 값의 범위가 어느 정도 일지라도 autoconf은 런타임에 변수가 가질 수있는 값에 대한 도움말 텍스트의 형식 지정에 할당 할 공간을 알 수있는 방법이 없습니다.

이진 옵션 만 필요한 경우 (즉, [=ARG] 기능이 사용되지 않거나 필요하지 않은 경우) 기본 설정을 기반으로 적절한 도움말 텍스트를 생성하는 스마트 래퍼 매크로를 작성할 수 있어야합니다. default는 accepted answer에서 제안 된 것과 비슷한 방식으로 M4 매크로로 먼저 정의됩니다.

관련 문제