次のメイクファイルから
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);