我有一个文件夹演示,里面我制作了一个Makefile和其他各种文件。现在我想压缩这个文件夹,因为我已经写了下面的Makefile,但总是给我错误
生成文件 - :
all:demo.tgz
demo.tgz:
cd ..
tar -cvzf demo.tgz demo/
错误是"演示没有文件或目录"
我可以告诉我这里有什么问题.....
它给了我以下错误
jatinkhurana@jatinkhurana-HP-ProBook-4430s:~/Mtech1/SoftwareLab/makefile/demo$ make
cd ..
tar -cvzf demo.tgz demo/
tar: demo: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
make: *** [demo.tgz] Error 2
答案 0 :(得分:2)
make文件中的每一行都在一个单独的环境中运行。这意味着cd ..
不会更改以下命令的当前目录。你必须通过组合它们来强制命令在同一个环境中运行。
demo.tgz:
cd .. && tar -cvzf demo.tgz demo/
答案 1 :(得分:2)
all:demo.tgz
demo.tgz:
( \
cd .. ; \
tar -cvzf demo.tgz demo/ ;\
)
食谱中的每一行都将在自己的环境中运行。使用cd
更改目录不会更改下一行配方的环境。
将命令简单打包到大括号中,并在每行末尾添加;\
。这将使它成为一个在一个shell环境中运行的命令。