우선 여기가 이런 질문을 드리는 것이 맞는지 전혀 모르겠습니다만...
나는 현재 디렉토리에서 작업 중이며 디렉토리 파일의 모든 내용을 포함하는 파일을 생성하려고 합니다. 요구 사항은 Makefile의 규칙을 사용하여 이 작업을 수행해야 한다는 것입니다. 현재 내 makefile의 맨 위에는 파일 목록이 있고 그 다음에는 다른 규칙이 있고 그 다음에는 슬픈 규칙에 대한 시도가 있습니다. 내가 겪고 있는 문제는 "y에 대상 x가 필요하다는 규칙이 없습니다"라는 메시지가 계속 표시된다는 것입니다. 제 생각에는 레시피나 전제 조건에 문제가 있는 것 같습니다. 그래서:
FILES= file1 file2 file3 file4 file5...
directory_name/all.txt: **HERE IS THE PART IDK ABOUT**
cat $^ > $@
나는 make 명령과 일반적인 코딩에 대해 매우 익숙하지 않기 때문에 아마도 어리석은 질문일 수도 있지만 온라인의 다른 곳에서는 여전히 만족스러운 답변을 찾을 수 없습니다. 나는 해당 디렉토리(directory_name/%.txt 등)로 파일을 참조하거나 파일을 전제 조건으로 나열하려고 시도했지만 아무것도 작동하지 않습니다.
답변1
귀하의 규칙은 다음과 같습니다
directory_name/all.txt: $(FILES)
cat $(FILES) > $@
이는 규칙이 GNU make
및 BSD 에 대해 작동하도록 최대 이식성을 제공합니다 make
(이해하지 못할 수 있으며 $^
어떤 구현을 사용하고 있는지 말하지 않았습니다). 명령이 포함된 줄은 cat
탭을 사용하여 들여쓰기해야 합니다.
답변2
종속성 목록은 $(FILES)입니다.
기본적으로 이는 지정된 목록을 확장합니다. 따라서 유효성에 기여하는 파일이 대상 자체보다 최신인 경우 대상이 다시 생성됩니다.
패턴이 있는 경우 파일에 와일드카드를 사용하는 약어가 있습니다. 귀하의 예를 들어 다음과 같을 수 있습니다.
FILES= file[1-9]