2012-04-05 100 views
3

是不是Makefile的語法是原因「沒有規則,使目標」與化妝的?

target: require_files 
    cmd... 

爲什麼我有這個問題?

的Makefile

MXMLC = /opt/flex/bin/mxmlc 
MXMLC_RELEASE = $(MXMLC) -debug=false -compiler.optimize=true 

release: bin-release/Wrapper.swf, bin-release/Application.swf 

bin-release/Application.swf: src/**/*.as, lib/*.swc 
    $(MXMLC_RELEASE) -output bin-release/Application.swf src/Application.as 
    @@-rm ../server/public/game/Application.swf 
    $(CP) bin-release/Application.swf ../server/public/game/Application.swf 

bin-release/Wrapper.swf: src/*.as, src/engine/**/*.as, lib/*.swc 
    $(MXMLC_RELEASE) -output bin-release/Wrapper.swf src/Wrapper.as 
    @@-rm ../server/public/game/Wrapper.swf 
    $(CP) bin-release/Wrapper.swf ../server/public/game/Wrapper.swf 

$:使斌釋放/ Application.swf

〜/工作區/項目/ src目錄/閃光燈[2] 19:20補充:*無規則使 目標src/constant/*.as,', needed by斌釋放/ Application.swf」。 停止。

回答

6

刪除逗號

MXMLC = /opt/flex/bin/mxmlc 
MXMLC_RELEASE = $(MXMLC) -debug=false -compiler.optimize=true 

release: bin-release/Wrapper.swf bin-release/Application.swf 

bin-release/Application.swf: src/**/*.as lib/*.swc 
    $(MXMLC_RELEASE) -output bin-release/Application.swf src/Application.as 
    @@-rm ../server/public/game/Application.swf 
    $(CP) bin-release/Application.swf ../server/public/game/Application.swf 

bin-release/Wrapper.swf: src/*.as src/engine/**/*.as lib/*.swc 
    $(MXMLC_RELEASE) -output bin-release/Wrapper.swf src/Wrapper.as 
    @@-rm ../server/public/game/Wrapper.swf 
    $(CP) bin-release/Wrapper.swf ../server/public/game/Wrapper.swf 
+0

我發現了另一個問題,SRC/**/*。如不匹配的src/A/B/C/d.as,只能匹配的src/A/b.as任何方式來匹配所有。至於文件在src – 2012-04-05 11:48:18

+0

使用'$(殼...)'的東西'find' – sehe 2012-04-05 11:52:20

2

您可以找到使用find的文件,例如:

ASFILES = $(shell find src -name "*.as") 
SWCFILES = $(shell find lib -name "*.swc") 

,然後使用您的規則列表:

bin-release/Application.swf: $(ASFILES) $(SWCFILES) 
     $(MXMLC_RELEASE) etc 

我想你會使用在配方個.swc文件(即$(MXMLC_RELEASE)位),雖然你目前沒有。

+0

感謝很多像.... – 2012-04-06 09:38:18