2011-09-26 1 views
7

건물 (유지 보수)을 쉽게하기 위해 몇 가지 구성 요소 (liba, b, c, d)로 분할 된 내 손으로 (주인) 큰 프로젝트가 있습니다. 전체 패키지를 빌드 할 때 모든 하위 구성 요소를 순서대로 빌드해야하며이 패키지 중 일부는 서로 의존합니다.서브 패키지가 서로 다른 Autoconf 서브 디렉토리?

보다 명확한 용어로, liba는 b, c 및 d의 전제 조건이며 liba의 존재 여부는 configure 스크립트가 검사합니다. 이 확인은 b 배포본을 자체 빌드 할 때 사용자에게 친숙한 오류 메시지를 제공하는 데 반드시 필요합니다. 그러나 마스터 패키지와 모든 하위 패키지를 빌드 할 때 liba는 하위 타겟으로 빌드됩니다. 따라서 configure가 master suite에서 실행될 때 liba가 아직 설치되지 않았으며 b의 liba 검사가 실패합니다.

--with-liba = internal 또는 유사한 플래그를 b의 configure 스크립트에 전달하여이 문제를 해결할 수 있습니다. 그러나, autoconf에 대한 그런 플래그 전달에 관한 문서를 찾지 못했습니다. 당분간, 나는 autoconf/automake와 서브 디렉토리가 똑같은 길고 긴 커스텀 Makefile을 가지고 있지만, 의존성을 약간 재정렬하므로 (configure liba) => (configure b) => (build liba) => (build b) => (build b)를 사용하면 순서는 (configure liba) => (build liba) => (install liba) => (configure b) =>

어떻게하면 표준 autoconf/automake 하위 디렉토리로 이것을 리펙토링 할 수 있습니까?

+0

autotools는 패키징 도구가 아닙니다. 그 (것)들을 그런 것으로 사용하려고 시도하는 것은 기껏해야 고통 스럽습니다. 별도의 패키지를 작성하십시오. apt/yum/pkg/etc가 의존성을 다루도록하십시오. –

답변