2014-02-05 51 views
0

我遇到了运行makefile以'cartoonify'图像的问题。我正在运行RoR应用程序,并在我的控制器中运行。让Ruby系统运行'Make'文件

def cartoonify 
    system('make card FILE=public/cards/gallery/* EXT=.png') 
end 

所以,“画廊”是它想要运行的'Makefiles'的位置。这里是Makefile的代码。

card: 
    @cd /Users/Taylor/cardmaker/rails/public/cards/gallery && ./sketch -k gray -c 185 $(FILE).$(EXT) tmp/tmp_$(FILE).$(EXT) 
    @cd /Users/Taylor/cardmaker/rails/public/cards/gallery && ./cartoon -p 70 -e 2 -n 3 tmp/tmp_$(FILE).$(EXT) tmp/grey_$(FILE).$(EXT) 
    @cd /Users/Taylor/cardmaker/rails/public/cards/gallery && ./coloration -h 200 -s 100 -l 0 -r 0 -g 0 -b 100 -B 30 tmp/grey_$(FILE).$(EXT) final/final_$(FILE).$(EXT) 
    @rm /Users/Taylor/cardmaker/rails/public/cards/gallery_$(FILE).$(EXT) tests/tmp/grey_$(FILE).$(EXT) 

然而,当我在终端运行命令,它说:

make: *** No rule to make target `card'. Stop. 

我从来没有与一个Makefile工作之前,我想知道我为什么不能写“制卡FILE = {bla bla文件名称} EXT = .png并让它起作用任何建议?

+0

请确保[tag:make]和当前文件夹的版本相同。 –

回答

0

Make将读取和操作当前目录中的makefile,除非您指定一个与-f不同的makefile。上面的注释听起来像你当前的目录不对一个当您运行make,所以它不能找到生成文件

你必须要么运行make -f public/cards/gallery/Makefile card FILE=...,允许化妆找到你的makefile,或者与make -C public/cards/gallery card FILE=...

还首次改变工作目录,我觉得不太可能FILE=public/cards/gallery/*即将起作用,因为通配符*会扩展为目录中的所有文件。