문제

나는 보지 못에 관한 질문 GNU autoconf/automake 구축,그러나 나는 적어도 일부는 당신이 거기에 그것을 잘 알고 있습니다.여기에 간다:

나는 프로젝트(전화를 거는데 그것은 하위)을 포함하는 다른 프로젝트(vendor).공급업체 프로젝트는 독립형 프로젝트에 의해 유지되는 다른 사람.포함하여 프로젝트 같은 이것은 상당히 간단한, 지만,이 경우에 있는 작은 snag:각 프로젝트 생성하는 그것의 자신 config.h 파일을,각각의 정의 표준 매크로 같은 패키지 버전은,등등.즉,중에 빌드 할 때,공급업체가 건설되고,많은 이 같은 오류가:

... warning: "VERSION" redefined
... warning: this is the location of the previous definition
... warning: "PACKAGE" redefined
... warning: this is the location of the previous definition

이들은 경고,시간이 되는 이상,그러나 나는 그들을 제거합니다.만 관련 정보를 수 있었던 설정과 함께 Google 검색 스레드에 automake 우편 목록 되지 않습니다 많은 도움이됩니다.누군가가 더 좋은 아이디어가?

도움이 되었습니까?

해결책

일부 사항:

  • 당신이 언급하지 않는 방법 config.h 포함되었다-따옴표나 각 부류입니다.보 이 다른 질문 에 대한 자세한 정보는 차이가 있습니다.에서 짧은 config.h 일반적으로 포함되어 있으로,따옴표지 각괄호,그리고 이해하는 전처리기호 config.h 프로젝트로부터의 자신의 디렉터리(일반적으로 당신이 원하는 무엇)
  • 당신이 말하는 프로젝트가 포함해야에 둘러싸고 프로젝트 config.h 일반적으로 이 모든 것을 원합니다.하위 프로젝트는 독립형이며,패키지 및 버전해야 하는 하위 프로젝트,여러분의 것이 아닙니다.를 포함하는 경우 이러한 이유로,당신의 형식화된 데이터 읽기 프로젝트 예를 들어,당신은 여전히려 이러한 이유로 코드를 컴파일 패키지와 함께 이러한 이유로 및 버전(어떤 이러한 이유로 버전).
  • 그것은 일반적으로 큰 실수를 config.h 야에서 포함되는 공중의 헤더가 있습니다. config.h 는 귀하의 프로젝트 또는 하위 프로젝트,그리고 포함 되어야만 합니다.c 파일이 있습니다.경우에 따라서,귀하의 공급업체의 설명서를 포함하라고 말한 그들의"공급 업체입니다.서"그리고 대중의 헤더를 포함 config.h 어떻게든 그 다음은 아니다.마찬가지로 귀하의 프로젝트 라이브러리 포함하지 마세요 config.h 에서 어디서나 귀하의 공개적으로 설치된 헤더가 있습니다.

다른 팁

그것은 확실히 해킹,하지만 나는 포스트-프로세스 autogen'd config.h 파일:

sed -e 's/.*PACKAGE_.*//' < config.h > config.h.sed && mv config.h.sed config.h

이 쾌활에서 우리를 구축 환경 그러나 나는 것에 관심이 깨끗하다.

그것은 밝혀 있었다 아주 간단한 해결책을 수도 있습니다.공급업체 프로젝트를 수집하는 여러 헤더 파일을 하나로 모노리식 헤더 파일,다음 #included 공급업체에 의해 소스입니다.그러나 이들에게 규칙을 구성하는 모놀리식 헤더를 실수로 포함되어 생성된 config.h.의 존재,패키지 버전은,등등.config 변수에 모놀리식 헤더의 원인은 무엇이었을 재정의 경고입니다.그것은 공급업체 config.h 었다는 관련이 있기 때문에"config.서"항상 해결을 $(top_builddir)/config.h.

저는 이것을 믿는 방법입니다 그것은 해야 해요.기본적으로 하위 프로젝트 포함해야에 둘러싸고 프로젝트 config.h 대신 그것의 자신의하지 않는 한,하위 프로젝트에 명시적으로 포함되어 있는 자신의나 조작 경로를 포함하도록 자체 디렉토리에 오기 전에 $(top_builddir), 또 그렇지 않으면 조작하는 헤더 파일을 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top