题
我面临一个相当奇怪的问题。我的作文件包含:
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任何文件系统的对象被称为item1
或item2
, 然后做所指定的行动(在这个例子),然后再考虑all
最新的。 - 如果
all
是一个目录,它的存在。如果它已被修改,最近,这将是最新的。
建议使用 .PHONY: all item1 item2
是很好的GNU;它不工作的其他变体 make
.
不使用目标名目录的名字-除非你确定你知道你在做什么。和使用 .PHONY
.
其他提示
尝试 虚假的声明 你的所有目标。
好吧看起来像是作出不允许的目标谁都有相同的名称,如一些目录中目前的水平。观察:
-"所有"是一个目录@$(家庭)/应用程序 -all1/2/3:item1item2工作 -全部:item1item2不工作,所以是任何目标的名字具有相同的名称所述的目录。
我很确定我在做什么荒唐的错误在这里。
不隶属于 StackOverflow