-1

以下を実行してみました(Webサイトで見つかりました)

.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

助けが必要...

4

1 に答える 1

3

GNU make を使用します。証拠は次のとおりです。

  1. Borland が著作権を持つ make を使用しています。これは、使用している make が GNU make ではないことを示しています。

  2. ここで例を見つけました。著者は 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
    
于 2013-11-15T11:42:20.480 に答える