我面临一个相当奇怪的问题。我的作文件包含:

all: item1 item2

item1: dep1 dep2
dep1:
    @echo
    cd $(HOME)/apps; /bin/rm -f $(D_ALL_OBJECTS) 
    cd $(SRCHOME)/fusionapps; make -k -f $(SOMEMAKEFILE) $(D_ALL_OBJECTS)
    @echo
dep2:
    @echo
    cd $(HOME)/apps; /bin/rm -f $(D2_ALL_OBJECTS) 
    cd $(SRCHOME)/fusionapps; make -k -f $(SOMEMAKEFILE) $(D2_ALL_OBJECTS)
    @echo
item2: ...
.....

现在,"make -f Makefile item1"工作,但当我试试"make -f Makefile all"它不工作。你们有看到任何问题在我makefile?

感谢


增编:

嗯,它看起来像是作出不允许的目标,有名称相同的一些目录中目前的水平。观察:

  • "所有"是一个目录@$(家庭)/应用程序
  • all1: item1 item2 工作
  • all: item1 item2 不工作

因此,任何目标的名字具有相同的名称为一个目录似乎失(如在无法做任何有用的)。

我很确定我在做一些荒谬的错误在这里。

有帮助吗?

解决方案

当你写:

all: item1 item2

然后请求 make all, 那告诉 make:

  • 找到一个文件系统中的对象 all 并确保任何东西取决于(item1, item2)是最新的。
  • 如果 all 不存在,或者是出的日期w。r.t任何文件系统的对象被称为 item1item2, 然后做所指定的行动(在这个例子),然后再考虑 all 最新的。
  • 如果 all 是一个目录,它的存在。如果它已被修改,最近,这将是最新的。

建议使用 .PHONY: all item1 item2 是很好的GNU;它不工作的其他变体 make.

不使用目标名目录的名字-除非你确定你知道你在做什么。和使用 .PHONY.

其他提示

尝试 虚假的声明 你的所有目标。

好吧看起来像是作出不允许的目标谁都有相同的名称,如一些目录中目前的水平。观察:

-"所有"是一个目录@$(家庭)/应用程序 -all1/2/3:item1item2工作 -全部:item1item2不工作,所以是任何目标的名字具有相同的名称所述的目录。

我很确定我在做什么荒唐的错误在这里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top