autoconf의 다른 하위 디렉터리에 중첩된 패키지가 있습니까?

autoconf의 다른 하위 디렉터리에 중첩된 패키지가 있습니까?

다양한 방식으로 컴파일해야 하는 다양한 하위 디렉터리가 있습니다. 예를 들어 일부 파일은 CFLAGS를 사용하여 다른 파일과 함께 포함되어야 합니다. 하지만 CFLAGS는 구성 파일에서만 설정할 수 있기 때문에 여러 개의configure.ac가 필요할 것 같습니다.

위에서 언급한 것처럼 중첩된 패키지를 사용하는 것이 좋은 생각입니까?gnu.org) 이에 대해, 아니면 과잉입니까?

참고: 나는 이것을 과잉이라고 부릅니다. 왜냐하면 gnu.org의 솔루션이 README 등을 추가하기 때문입니다.모든하위 디렉토리. 이것을 피할 수 있습니까?

답변1

README 등을 포함하지 않으려면 이 foreign옵션을 추가하세요. 예를 들어 파일에 다음을 configure.ac추가합니다.

AM_INIT_AUTOMAKE([foreign])

바라보다Automake 매뉴얼의 엄격함

구성 파일을 사용하여 하위 디렉터리에 사용되는 다양한 C 플래그를 설정할 수 있습니다. 하지만 심각한 자동차 해커가 되고 싶지 않다면 간단한 솔루션부터 시작해 보겠습니다.외국의.

CFLAGS다음은 다른 것에서 설정하는 방법을 보여주는 작은 예입니다 . 단순화를 위해 CFLAGS다른 환경 변수를 기반으로 설정하므로 구성 매개변수를 처리할 필요가 없습니다. 나는 CFLAGS그것을 메인 파일에 설정하고 당신이 원하는 것은 하위 디렉토리 파일에 있습니다. 이 모든 것이 쉽게 바뀔 수 있었으면 좋겠습니다.

내 구성.ac 파일은 다음과 같습니다

AC_INIT([foo], [1.0], [https://example.com])
AM_INIT_AUTOMAKE()
AC_SUBST(PROJ1_CFLAGS)
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

내 Makefile.am 파일은 다음과 같습니다.

CFLAGS=@PROJ1_CFLAGS@

이제 모든 것을 빌드하세요.

$ autoreconf -fi
$ autoconf
$ CFLAGS='-g' PROJ1_CFLAGS='-Wall' ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
$

Makefile을 보면 다음과 같은 내용을 볼 수 있습니다.

CFLAGS='-Wall'

PROJ1_CFLAGS실제로 는 환경 변수가 아닌 CFLAGS환경 변수 에서 설정 됩니다 .

관련 정보