2014-02-05 45 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/*即將起作用,因爲通配符*會擴展爲目錄中的所有文件。