2009-04-20 3 views
5

(현재) 작은 C 프로젝트에서 단위 테스트를 지원하기 위해 페이지의 지침을 따르고 있습니다. Check 대신 Cgreen을 사용하고 있지만GNU make % 스타일 패턴 규칙의 휴대형 버전

9 단계에서 automake가 GNU make 확장 인`% '스타일 패턴 규칙 사용에 대한 경고를 내고 있습니다.

특정 메이크업 규칙은 다음과 같습니다 확장을 GNU에 의존하지 않는이 규칙을 지정 상응하는 방법이 있는지 궁금 해요

check_%.$(OBJEXT) : $(srcdir)/%.c 
    $(COMPILE) -DCHECKING -c -o [email protected] $^ 

.

답변

7

이동식 규칙은 다른 접미사 만 사용할 수 있으며 접두사는 동일해야합니다.

.c.o: 
     $(COMPILE) -DCHECKING -c -o [email protected] $< 

접미어는 반드시 점으로 시작하지 않아도됩니다. (.이 경우 당신은 추측 할 수 없기 때문에, 당신의 접미사가 무엇인지 Automake는 말할 필요) 그래서 당신이 뭔가를 할 수 예를 들어 이름을 변경하는 경우 다음과 같이 check_showdns.oshowdns_check.o에 :

SUFFIXES = _check.o 
check_libapdns_LDADD  = @[email protected] showdns_check.o 
.c_check.o: 
     $(COMPILE) -DCHECKING -c -o [email protected] $< 
+0

큰 제안. 문제를 수정합니다. 나는 _check 대신에 _test 접두어를 사용했다. – Wes

-2

차라리 해제하려고 것 경고 또는 그냥 무시하십시오. GNU make는 유닉스와 비슷한 모든 플랫폼에 존재한다. makefile 이식성을 유지하는 데 시간을 소비 할 실질적인 이유가 없습니다. GNU make는 다른 대부분의 방언보다 기능상으로 우월합니다.

+0

사실이지만 호스트 OS가 상자를 제공 할 때 추가 도구를 설치하지 않아도됩니다. – Wes

+0

그러나 휴대용 메이크 파일을 유지 관리해야하는 시간을 고려하십시오. GNU make 만 대상으로한다면 makefile을 작성하는 것이 훨씬 쉽고 응용 프로그램을 개선하고 버그를 수정하는 데 더 많은 시간을 할애 할 수 있습니다. – JesperE

+1

멋진 이야기, GNU Make 만 대상으로한다면 모든 Makefile GNUMakefile의 이름을 지정해야합니까? 모든 사용자의 'make'를 GNU Make로 설정하고 GNUMakefile을 사용하여 표준 make와의 호환성을 깨고 자하는 욕구를 나타내지 않는 것은 "portable makefile을 유지하는 데 시간을 낭비하지 마라"는 태도 덕분입니다. – MkV