다양한 방식으로 컴파일해야 하는 다양한 하위 디렉터리가 있습니다. 예를 들어 일부 파일은 CFLAGS를 사용하여 다른 파일과 함께 포함되어야 합니다. 하지만 CFLAGS는 구성 파일에서만 설정할 수 있기 때문에 여러 개의configure.ac가 필요할 것 같습니다.
위에서 언급한 것처럼 중첩된 패키지를 사용하는 것이 좋은 생각입니까?gnu.org) 이에 대해, 아니면 과잉입니까?
참고: 나는 이것을 과잉이라고 부릅니다. 왜냐하면 gnu.org의 솔루션이 README 등을 추가하기 때문입니다.모든하위 디렉토리. 이것을 피할 수 있습니까?
답변1
README 등을 포함하지 않으려면 이 foreign
옵션을 추가하세요. 예를 들어 파일에 다음을 configure.ac
추가합니다.
AM_INIT_AUTOMAKE([foreign])
구성 파일을 사용하여 하위 디렉터리에 사용되는 다양한 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
환경 변수 에서 설정 됩니다 .