我试图为tcsh脚本创建一个makefile,该脚本将文件复制到名称proj3,并将权限更改为每个人都可执行。我知道如何为c ++和c等做makefile,但我不知道为什么我们要为shell脚本做这件事。
我的文件名是proj3final
这是我到目前为止所做的:
proj3final:
cp final proj3
chmod 755 proj3
每当我运行make proj3
或make
时,它都会提示nothing to be done
答案 0 :(得分:0)
makefile规则应该始终创建一个与目标同名的文件。
如果您希望make能够告诉您何时需要运行规则,那么您的规则需要先决条件。
您的规则告诉make它将创建proj3final
文件,但它实际上会创建proj3
文件。这会让人迷惑。
此外,您的规则赋予该目标没有任何先决条件,因此每当proj3final
文件存在时,make将假定它是最新的并且不必执行任何工作。
假设您的输入文件名为final
,并且您希望将其复制到名为proj3final
的文件,那么您需要的规则是
proj3final: final
cp $< $@
chmod 755 $@
哪个应该做你想做的事情,并使用Automatic Variables作为当前目标($@
)和第一个先决条件($<
)。