Make
Makefile:使用 make 變數複製 –> 錯誤;沒有變數就不是這樣!
在以下生成文件中
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
為什麼會這樣?
執行
make -n
以查看將要執行的命令,或者在make
沒有選項的情況下執行並查看已執行的命令。這樣做可能已經回答了你的問題,如果沒有,它會讓我們知道會發生什麼。從您顯示的片段中,您似乎想要分配 shell 變數,然後使用 make 變數。所以
TargetLocation
似乎是一個make
變數,而ActualFilePath="$<"
似乎是一個用於 shell 的命令。根據文件的其餘部分,這可能有效:
ActualFilePath="$<"; \ InterimFile1="tempHTML.md"; \ InterimFile1Path="$(TargetLocation)/$${InterimFile1}" ; \ cp -rf $${ActualFilePath} $${InterimFile1Path};
編輯
在規則的縮進部分,您不是分配
make
變數,而是指定 shell 命令。這應該有效:
$(OutputLocation)/%.md : $(InputLocation)/%.md cp -rf $< $@; ActualFilePath="$<"; \ InterimFile1Path="$@"; \ cp -rf $${ActualFilePath} $${InterimFile1Path}
這也應該有效:
ActualFilePath="$<" InterimFile1Path="$@" $(OutputLocation)/%.md : $(InputLocation)/%.md cp -rf $(ActualFilePath) $(InterimFile1Path);