2012-02-27 66 views
1

我的项目文件夹看起来像这样我可以在子文件夹中生成文件执行命令

Makefile 
/src 
    /flash 
    build.xml 
    /blabla 
    ... 

我写了一个Makefile这样

flash: src/flash/bin-debug/App.swf 

src/flash/bin-debug/App.swf: 
    cd src/flash 
    ant 

当我执行make flash,我得到以下信息:如何在src/flash中执行ant

回答

0

正如aix所解释的,您必须在一行中写入cd src/flash; ant

由于您没有为App.swf目标指定任何依赖关系,因此make在更改时无法重建。你可以添加它们。问题是你不想复制你已经用蚂蚁做的工作。

使用GNU Make解决方法是使用phony target。这是一种目标类型,它不会被解释为文件名,并且每次构建目标时都会执行其命令。

这看起来是这样的:

.PHONY: flash 

flash: 
    cd src/flash; ant 

键入make flash反复每次都会调用Ant。

4

makecreates a new subshell for each line。尝试:

src/flash/bin-debug/App.swf: 
    cd src/flash; ant 

否则,这两个命令在两个单独的子壳中执行。当第一个子shell终止时,cd的效果就会丢失。

+0

谢谢。有用。但如果App.swf一旦创建它就不会再执行此任务。无论如何强制它每次执行或检查'/ src/flash/src/**/*','/ src/flash/res/**/*'中的任何文件是否发生了变化 – 2012-02-27 11:41:09

相关问题