1

まだあまり機能していないメイクファイルがあります。

SRCS = *FOR

OBJS = $(SRCS:.FOR=.o)

tell_srcs: $(SRCS)
    echo $(SRCS)

tell_objs:  $(OBJS)
    echo $(OBJS)

make tell_srcs期待通りに動作し、戻ってきました

file1.FOR file2.FOR file3.FOR ....

ただし、make tell_objsまったく同じものを返します。

file1.FOR file2.FOR file3.FOR ....

これは私が期待したものでも必要なものでもありません。

要点は、make が*FOR$(SRCS) の結果を実際に格納するのではなく、実際の*FOR「コマンド」を $(SRCS) に格納していることであり、$(OBJS) を取得するために試みた置換は効果がないということだと思います。 ... 私は推測する。*FORとにかく、通常のマクロとして機能するように $(SRCS)の実際の出力を保存する方法はありますか? ありがとう。

ところで、バージョン情報は次のとおりです。

 >make -v
 GNU Make 3.81
4

1 に答える 1

2

これを試して:

SRCS = $(shell echo *FOR)

OBJS = $(SRCS:.FOR=.o)

tell_srcs: $(SRCS)
    echo $(SRCS)

tell_objs:  $(OBJS)
    echo $(OBJS)

*.FOR のシェル展開結果ではなく、SRCS を に設定SRCS = *.FORします。*.FORそのため、OBJS が処理されると.FOR、 の最後で変更が試みられます*FOR。SRCS で試してみたところ*.FOR、OBJS の使用によって発生した問題、*.oまたはディレクトリ内のすべての.oファイルのリストに遭遇したと思われます。

make -pこのケースはまだ謎のままだったのではないかと思いますが、これらのケースで役立ちます。

于 2013-08-21T17:41:15.337 に答える