패키지/lib _SOURCES 또는 패키지/lib 플래그 (CFLAGS, LDFLAGS, LDADD 등)를 조건부로 설정하는 경우 패키지의 플래그에 조건부로 추가하는 것이 좋습니다 , 예를 들면 :소스/플래그/libs에 대한 Automake 조건부 추가 또는 변수 할당
bin_PPROGRAMS = mypkg
mypkg_SOURCES = mypkg.c
if OS1
mypkg_SOURCES += os1.c
else
if OS2
mypkg_SOURCES += os2.c
endif
endif
또는 조건부 변수를 할당하고 (여부 인구는 null) 패키지의 플래그로 그들 모두를 연결하는, 예를 들면 : 나는 그것을 두 가지를 보이고했습니다
if OS1
os1_src = os1.c
else
if OS2
os2_src = os2.c
endif
endif
bin_PROGRAMS = mypkg
mypkg_SOURCES = mypkg.c $(os1_src) $(os2_src)
내가 볼 수 있습니다 각각에 이점. 전자의 경우 패키지에 플래그를 추가하는 실제 최종 조치는 조건부에서 명확하며 주어진 빌드에서 실제로는 의미가없는 변수를 사용하여 라인을 복잡하게 만들지 않았습니다. 후자의 경우 실제로 패키지에 포함 된 내용은 한 줄로 통합되어 보이지 않는 추가 기능은 다른 곳에서 발생하지 않지만 불투명 한 변수 이름에서 어떤 일이 벌어지고 있는지 실제로 알지 못할 수 있습니다.
또 다른 옵션은 옵션 2와 같은 일을하는 것이지만 변수를 configure 스크립트 (AC_SUBST를 사용하여 configure.ac)에 할당하는 것입니다. 하지만 필자는 구성 스크립트를 순수하게 사용 가능한 기능을 탐지하고 Makefile에서 사용할 옵션을 선택하여 유지하고 있습니다.
그들 중 한 명이 기술 단점이나 불쾌한 부작용이 있습니까?
이것은 완벽한 대답입니다. 감사합니다. 많은 옵션 중 하나에 의해 제공되는 자산이 있으면 단일 변수로 나타냅니다. –