makefile中存在循环依赖关系

时间:2013-11-15 10:02:53

标签: makefile

我尝试执行以下操作(在网站上找到)

.PHONY: coat shoes mobile sweater socks trousers shirt pants undershirt

# target    prerequisite           command
# ------------------------------------------------
coat:       shoes mobile sweater;  @echo put on $@
shoes:      socks trousers;        @echo put on $@
mobile:     trousers;              @echo put on $@
sweater:    shirt;                 @echo put on $@
socks:      ;                      @echo put on $@
trousers:   pants shirt;           @echo put on $@
shirt:      undershirt;            @echo put on $@
pants:      ;                      @echo put on $@
undershirt: ;                      @echo put on $@

但是我在cygwin上执行时遇到循环依赖错误。 这是输出

     1  MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
     2  Error: Circular dependency exists in makefile
     3    socks -> socks
     4  Error: Circular dependency exists in makefile
     5    shoes -> socks
     6  Error: Circular dependency exists in makefile
     7    mobile -> mobile
     8  Error: Circular dependency exists in makefile
     9    coat -> shoes
    10  Fatal: ';' does not exist - don't know how to make it

需要帮助......

1 个答案:

答案 0 :(得分:3)

使用GNU make。这是证据:

  1. 您使用的是版权归Borland所有,这表明您使用的品牌不是GNU品牌。

  2. 我找到了示例here。作者提供了GNU make的链接,建议他的例子期望GNU make。

  3. 您正在运行的make将;解释为依赖项。显然,它不能正确解释您的Makefile。

  4. 如果我在你的例子中使用GNU make,这就是我得到的:

    $ make
    put on socks
    put on pants
    put on undershirt
    put on shirt
    put on trousers
    put on shoes
    put on mobile
    put on sweater
    put on coat