2009-07-22 3 views
0

"생성 된"파일 (foo.yy -> foo.cc)을 포함하는 autoconf/automake를 사용하는 상당히 복잡한 (C++) 프로젝트가 있습니다. 실제 빌드는 다양한 플랫폼에서 "제어 스크립트"(개념에 익숙한 사람들을위한 Gentoo .ebuild)를 사용하여 수행됩니다.생성 된 파일을 배포판에 추가하는 가장 좋은 방법은 무엇입니까?

이제 대상 플랫폼 중 하나가 foo.yy -> foo.cc 단계를 올바르게 지원하지 않으며 Linux 상자에서 생성 된 foo.cc 파일을 사용해야합니다.

1) 프로젝트 저장소에 foo.cc에서 확인하고 어떻게 든) configure.in 패치 (또는 무엇이든 foo.yy/foo는에 타임 스탬프 확인을 포함 :

지금 나는 이것에 대해 이동하는 방법은 두 가지가 .cc, 오래된 foo.cc와 함께 해당 대상에서 실행하면 이해할 수있는 오류 메시지가 생성됩니다.

2) foo.cc를 제어 스크립트 저장소에 체크인하고 스크립트에서 타임 스탬프를 제어하고 오류 메시지를 표시하게하십시오.

2) 아무런 문제가 없지만 foo.cc를 넣는 것이 적절한 장소라고 생각하지 않습니다.

반면에 autoconf/automake에 대해서는 잘 모르며 configure.in (또는 whereever)에 타임 스탬프 확인/오류 메시지를 구현하는 방법을 알지 못합니다.

당신의 의견은 무엇이며, 해결책 1에 대해 알아야 할 사람이 있습니까?

편집 : foo.yy -> foo.cc 단계 자체를 수행 할 수있을 때까지 문제가되는 대상 상자를 조정하여 솔루션 3)을 사용하여 해결합니다. 문제가 해결되었습니다.

하지만 질문을 열어 두겠다 - autoconf/automake로 타임 스탬프 검사/이해할 수없는 오류 메시지를 보내는 방법? Automake의 설명서에서 8.8

답변

0

: ‘ ’ yacc에 (또는 ‘ 렉스 ’)에 의해 생성

중간 파일 만든 임의 분포에 포함될 것이다. 그렇게하면 사용자는 에 ‘ yacc ’ 또는 ‘ lex ’이 필요하지 않습니다.

마치 당신이 묘사하고있는 문제가 존재하지 않아야하는 것처럼 들립니다.

+0

"make dist"를 수행 한 다음 * that *을 대상에 배포하고 배포판에서 패키지를 빌드하십시오. 하지만이 경우 CVS에있는 바이너리가 직접 작성됩니다 ... 편집 된 질문보기 - 더 이상 개인적으로 더 이상 문제가되지 않습니다. – DevSolar

+0

VCS에서 직접 배포하는 이유는 무엇입니까? (나는 'CVS'가 오타가되기를 희망한다. CVS를 여전히 사용하고있는 것은 아니 겠는가?) 개발 상자에서 autotool chain을 실행하고 생성 된 tarball 만 배포하면 정말 쉽다. 특히 yacc 나 lex 또는 autoconf 나 automake 또는 libtool이나 m4 (etc)를 대상 상자에 설치할 필요가 없습니다. –

+0

"make dist"는 automake (또는 GNU 규칙을 따르는 패키지)를 사용할 때 배포판을 만드는 방법입니다. automake가 제공하는 것을 사용하지 않을 경우, automake는 많은 도움을 줄 수 없습니다. – Braden

관련 문제