FreeBSD의 포트에서 ccache를 사용할 수 없습니다.

FreeBSD의 포트에서 ccache를 사용할 수 없습니다.

저는 FreeBSD(9.1)를 처음 사용하고 있으며 시스템을 설정하는 중입니다. 아직 파악하지 못한 한 가지 문제는 ccache일을 시작하는 것입니다. 포트에서 설치하고 설명서(수정됨 /etc/make.conf)의 지침을 따랐습니다. 포트에서 새 패키지를 컴파일하면 제대로 작동하지만 캐시가 채워지지 않아 ccache전혀 사용되지 않는 것처럼 보입니다.

/etc/make.conf내 파일의 내용은 다음과 같습니다.

WITH_PKGNG= yes
# added by use.perl 2013-01-20 01:08:34
PERL_VERSION=5.14.2

# the rest here is copied from /usr/local/share/doc/ccache/ccache-howto-freebsd.txt
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))
.if !defined(NOCCACHE)
CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
.endif
.endif

또한 의 다른 지침을 따르고 루트에서 사용하는 기본 셸인 ccache-howto-freebsd.txt에 다음 줄을 추가해 보았습니다 ./etc/csh.cshrc

setenv PATH /usr/local/libexec/ccache:$PATH
setenv CCACHE_PATH /usr/bin:/usr/local/bin

여전히 차이가 없습니다. ccache -s컴파일 타임에 캐시가 아직 가득 차지 않았음을 나타냅니다. 어떤 생각이 있나요?

답변1

이 질문은 2013년 초에 제기되었습니다. 그해 10월에는 ccache와 포트를 올바르게 사용하는 방법에 대한 지침이 나왔습니다.다음에 추가도착하다 ccache-howto-freebsd.txt. 그 이후로 ccache와 포트 인프라가 모두 개선되어 이제 더 잘 통합되었습니다.

현재 FreeBSD 11 이상에서는 devel/ccache 포트를 설치하고 포트를 추가하기만 하면 WITH_CCACHE_BUILD=yes기본 /etc/make.conf및 포트와 "작동"합니다.

이전 FreeBSD 버전에서는 WITH_CCACHE_BUILD=yes포트만 영향을 받습니다. 기본에는 여전히 .if... .endif절과 경로 조정이 필요합니다. 정확한 지침이 제공되며 ccache-howto-freebsd.txt따라하기 쉬워야 합니다.

답변2

(arved 님의 의견이 맞습니다. 문제는 해결되었지만 어쨌든 if 문이 권장되는 이유를 여전히 이해하지 못합니다. 그래서 답변을 커뮤니티 위키에 게시합니다. 이유를 알고 계시다면 자유롭게 개선하십시오. )

먼저 어떤 컴파일러가 사용되는지 알아보세요.

 $ cd /usr/ports/devel/gdb && make -V CC
 cc

cc은 기본 C 컴파일러이지만 이어야 합니다 ccache.

문제를 해결하려면 /etc/make.confif 문을 편집하고 제거하세요...

.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))`

...그리고 물론 에필로그도요 .endif. 그러면 문제가 해결됩니다.

 $ cd /usr/ports/devel/gdb && make -V CC
 /usr/local/libexec/ccache/world/cc

답변3

나는 같은 문제에 직면했다. 나를 위해 일한 솔루션은 다음과 같습니다/etc/make.conf

# added by use.perl 2013-09-06 18:26:40
PERL_VERSION=5.14.4

.if !defined(NO_CCACHE)
    CC= /usr/local/libexec/ccache/world/cc
    CXX= /usr/local/libexec/ccache/world/c++
.endif

.if ${.CURDIR:M*/ports/devel/ccache}
    NO_CCACHE= yes
.endif

관련 정보