2017-01-19 1 views
1

다음과 같은 automake 관련 문제가 있으며 어떤 조언이나 힌트를 보내 주시면 기쁩니다.bin_PROGRAMS 및 해당 소스를 기반으로하는 타겟 자동 생성

의이 n 프로그램을 작성하는 일반적인 Makefile.am하자 (전 2를.) :

bin_PROGRAMS=p1 p2 
p1_SOURCES=a1.c a2.c 
p2_SOURCES=b1.c b2.c 

나는 이런 식으로 뭔가를 생성하는 모든 Makefile.am에 포함 할 수있는 "마법"을 찾을 필요 모두에 대해 bin_PROGRAMS :

p1.1: a1.c a2.c 
     ./some-script a1.c a2.c > p1.1 

p2.1: b1.c b2.c 
     ./some-script b1.c b2.c > p2.1 

가능합니까? 이상적으로 POSIX 방식으로 ... 어떤 아이디어에 감사드립니다.

답변

0

패턴 규칙이 필요하기 때문에 안타깝게도 이식성이 뛰어난 makefile에서는 불가능하다고 생각합니다.

패턴 규칙은 다음과 같을 것이다 :

%.1: $(FIXME_something_goes_here) 
     $(AM_V_GEN)$(srcdir)/some-script $^ > [email protected] 

(VPATH을 수행하는 빌드 할 때 메이크 작동하는지 확인하려면 $(srcdir)을 잊지 마세요 ...)

이 어려운 부분은 무엇입니까 $(FIXME_something_goes_here)을 입력하십시오. 같은 $(p1_SOURCES) 같은 Automake의 지시 그냥 일반 메이크 변수이기 때문에, 당신은 자동으로이 같은 뭔가를 결정할 수 있어야한다 :

$($(basename $(@F))_SOURCES) 

당신이 그런 다음 프로그램 이름에 - 불법 식별자 문자를 가지고 있다면 좋겠하지만 그들을 조금 더 복잡한 표현을 포함하는 _으로 모두 바꿀 필요가있다.

관련 문제