다음 메이크파일에서
InputLocation:=./Test
OutputLocation:=$(InputLocation)/Output
Input:=$(wildcard $(InputLocation)/*.md)
Output:=$(patsubst $(InputLocation)/%, $(OutputLocation)/%, $(Input:Input=Output))
.PHONY: all
all: $(Output)
$(OutputLocation)/%.md : $(InputLocation)/%.md
cp -rf $< $@;
ActualFilePath="$<"
InterimFile1Path="$@"
#cp -rf $(ActualFilePath) $(InterimFile1Path);
cp -rf $< $@;
파일이 성공적으로 복사되었습니다.
cp -rf $(ActualFilePath) $(InterimFile1Path)
오류가 발생 하지만cp: missing file operand
왜 그럴까요?
답변1
make -n
실행될 명령을 보려면 실행 하거나, make
옵션 없이 실행하여 실행되는 명령을 확인하세요. 그렇게 하면 귀하의 질문에 대한 답변이 될 수 있으며, 그렇지 않은 경우 무엇을 기대해야 할지 알 수 있습니다.
보여주신 스니펫을 보면 쉘 변수를 할당한 다음 make 변수를 사용하려는 것처럼 보입니다. 그래서 변수 TargetLocation
인 것 같고 쉘에 대한 명령인 것 같습니다.make
ActualFilePath="$<"
파일의 나머지 부분에 따라 다음과 같이 작동할 수 있습니다.
ActualFilePath="$<"; \
InterimFile1="tempHTML.md"; \
InterimFile1Path="$(TargetLocation)/$${InterimFile1}" ; \
cp -rf $${ActualFilePath} $${InterimFile1Path};
편집하다
규칙의 들여쓰기 부분에서는 make
변수를 할당하는 대신 셸 명령을 지정합니다.
이것은 작동합니다:
$(OutputLocation)/%.md : $(InputLocation)/%.md
cp -rf $< $@;
ActualFilePath="$<"; \
InterimFile1Path="$@"; \
cp -rf $${ActualFilePath} $${InterimFile1Path}
이것은 또한 작동합니다:
ActualFilePath="$<"
InterimFile1Path="$@"
$(OutputLocation)/%.md : $(InputLocation)/%.md
cp -rf $(ActualFilePath) $(InterimFile1Path);