2014-11-04 3 views
0

다른 디렉토리에 복사해야하는 파일이 두 개인 Makefile이 있습니다. 현재 테스트를 마쳤습니다여러 파일을 Makefile의 다른 디렉토리에 복사

echo ${dirs} | xargs -n 1 cp ${sources} 

그래서 나는이 방법이 매 소스 파일을 매번 디렉토리 중 하나에 복사하려고하기 때문에 작동하지 않는다는 것을 이해합니다. 하지만 각 소스 파일과 디렉토리마다 copy 명령을 실행할 수있는 방법이 있습니까?

안부,

사이먼

+0

'$ {dirs}'및'$ {sources} '는 입력 파일과 대상 디렉토리의 병렬 목록입니까? –

+0

이 질문은 분명하지 않습니다. 각 파일을 다른 디렉토리에 복사하거나 각 파일을 각 디렉토리에 복사 하시겠습니까? – Beta

+0

@EtanReisner 나는 OP에 대해 대답 할 것이다. :) 반드시 그런 것은 아니다. 그냥 말하자면, 그는 그가 끝내고 싶은 것을 알아야합니다. 즉, 어떤 파일을 여러 장 복사하고 다른 파일을 복사하지 않을 수도 있습니다. 그리고 그는 그 출처가 어디 있는지 알고 있습니다. 이제 그는 어떤 'Make'magick이 후자에서 전자로 갈길 원합니다. –

답변

1

나는 당신이 쓴에서 당신이 원하는 것을 추론 할 수있다 생각하지만, 다른 사람들이 지적했듯이, 당신은 그래서 우리는 필요 없어, 더 명확해야 그것을 추론하는데 시간을 보냅니다.

어쨌든 모든 파일을 모든 디렉토리에 복사하지 않으려는 경우 Make에 어떤 파일을 복사할지 지정해야합니다. 가장 쉬운 방법은 $(COPIES)과 같이 변수에 원하는 복사본의 전체 경로를 나열하는 것입니다 (${dirs}이 아님). 이 대답에서는 대상 디렉토리가 이미 있다고 가정합니다.

.PHONY: all 
all: $(COPIES) 

PERCENT := % 

.SECONDEXPANSION: 
$(COPIES): %: $$(filter $$(PERCENT)/$$(notdir $$*), $(sources)) Makefile 
    cp $< [email protected] 
+0

좋아! 사실, 파일은 디렉토리에 복사되고 만들어 져야합니다. 그래서 내가 tmp/conf/file1.conf로 복사하고자하는 파일의 전체 경로를 가지고 있고 그것을 tmp/conf/prod.conf에 복사하고 싶다고 가정 해 봅시다. 이 경우 _prod.conf_ 파일은 처음부터 존재하지 않지만 파일을 복사 할 때 만들어야합니다. – FluxxSimon

+0

@FluxxSimon 그런 다음 해결책을 시도한 결과를 포함하여 명시된대로 문제를 해결할 때이 대답을 수락하십시오. 이번에 정확한 다른 질문을 올리면 어떻게 할 지 보여 드리겠습니다. –

관련 문제