は、私はこのようなソースファイルのリストを持っていると言う:GNUMakeでターゲット依存の前提条件をどのように指定するのですか?
SOURCE=aaa.src bbb.src ccc.src
私はの名前はsoruceファイルに依存し、独自のフォルダにそれぞれ対応するターゲットを構築するためのルールを作成します。
SOURCEFILE ---->対応する出力ファイル/ターゲット
aaa.src -------------------> AAA/AAA bbb.src
の.out -------------------> BBB/ccc.src bbb.out --------- ----------> ccc/ccc.out
私はGNUMakeを使ってこのためのルールを書いていますか?ここでの問題は、すべてのソース(すなわち.src
ファイル)が代わりに同じを持っているただ一つの、(すなわち.out
ファイル)いずれかのターゲットがに依存していること、である
.PHONY: all clean
CC=somecompiler
SOURCE := aaa.src bbb.src ccc.src
RTARGS := $(SOURCE:%.src=%.out)
TDIRS := $(addsuffix /,$(basename $(SOURCE)))
TARGS := $(join $(TDIRS), $(RTARGS))
all:$(TARGS)
%.out: $(SOURCE) # Better source specification?
@[ ! -d "$(dir $*)" ] && mkdir "$(dir $*)"
$(CC) "$(patsubst %/,%,$(dir $*)).src" "[email protected]"
clean:
rm -f $(TARGS)
rmdir --ignore-fail-on-non-empty $(TDIRS)
:私の最善の努力には、以下のMakefileましたベースネーム。私はコメント行を%.out: %.src
に変更できますが、ソースファイルは出力ファイルと同じディレクトリになければなりません。
%.out: %.src
$(CC) "$>" -o "$*/[email protected]"
しかし、makeは、すでに存在するかどうかに関係なく、常にすべてのターゲットをコンパイルします。
適切なソースファイルのみを使用するようにmakeを取得するにはどうすればよいですか。 ジェネリックルールで各ターゲットの依存関係を個別に指定する適切な方法は何ですか?
これは基本的に 'ESTABLISH_DEPENDENCY'と呼ばれ、依存関係を指定するだけの空のルールと、ディレクトリを作成する別のルールを作成するものです。私は正しい?いずれにせよ、これはかなり上手です。ありがとうございました! –
@ con-f-use右。ペタンティックであるためには、依存関係のみを作成し、 '.out'のルールは作成しません。ディレクトリのルール –
もう一度ありがとうございます。私の編集を無視してください。私は 'all:'が既に3行目の右にあったことを見落としました。 –