AC_CHECK_HEADERS가 m4_foreach_w에서 호출 될 때 autoheader (2.65)는 위조 템플릿을 생성하는 것으로 보입니다. 예를 들어 :config.h.in에 불필요한 출력 억제
/* Define to 1 if you have the <hdr> header file.*/
#undef HAVE_HDR
그 가짜 템플릿을 피하기 위해 어떤 방법이 있나요 :
m4_foreach_w([hdr],[[foo.h] [bar.h]],
[AC_DEFINE([HAVE_]m4_translit(m4_toupper(hdr),[/.],[__]),[1],
[Define to 1 if ]hdr[ is available])]
[AC_CHECK_HEADERS([hdr])]
)
는 config.h.in
템플릿을 가지고 (AC_CONFIG_HEADERS([config.h])
은 가정) 원인은? m4_foreach_w
은 매크로 내에서 호출되며 실제 텍스트는 m4_foreach_w([hdr],[$1],
이며 m4 인용 부호가 있는지 궁금해합니다. 그러나 문제는 더 근본적인 것으로 의심됩니다. 말하자면, 나는 항상 내가 m4를 잘못 인용했다고 가정한다 - 그러나 그것은 여기서 문제가되지 않는다. 오히려 autoheader
은 m4_foreach_w
을 준수하지 않고 텍스트를 스캔합니다. 템플릿이 문제를 일으키는 것 같지는 않지만 최종적으로는 이상하게 보입니다 config.h
.