0

私はmakefileを持っています。

src1とsrc2の下のソースファイルからC:/bin/の下にターゲットのセットを構築する必要があります。

それらを順番に要求させてください

$ {DEST_DIR} / ao $ {DEST_DIR} / bo $ {DEST_DIR} / co $ {DEST_DIR} / do

makefileの一部で

DEST_DIR = C:/ bin

SRC_DIR1 = C:/ src1

SRC_DIR2 = C:/ src2

そして私はそれらのためのルールを次のようにしています

#rule#1

$ {DEST_DIR} /%.o:$ {SRC_DIR1} /%.c

  #the command required to build the target
  echo "Source: $< Target: $@ "

#rule#2

$ {DEST_DIR} /%.o:$ {SRC_DIR2} /%.c

  #the command required to build the target
  echo "Source: $< Target: $@ "

acとbcがSRC_DIR1にあり、ccとdcがSRC_DIR2にあるとします。

私がビルドすると、aoとboの場合はrule#1に、次にcoの場合はrule#2に移動して、正常にビルドされます。

大丈夫だとは思っていませんでした。私はそれがcoのルール#1に行き、「ターゲットccを作成するルールがありません」というエラーをスローすることを期待していたからです。しかし、それはルール#2に当てはまり、SRC_DIR2のccからcoを構築します。

誰かがそれがどのように機能するかを私に説明できますか?この場合、ワイルドカード文字はどのように機能し、%ルールの一致はどのように発生しますか?

4

1 に答える 1