压缩文件夹时在Makefile中获取错误

时间:2014-08-22 12:54:30

标签: makefile tar

我有一个文件夹演示,里面我制作了一个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

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环境中运行的命令。