私はメイクに取り組んでいると私は、上部に次の変数宣言があるとします。変数リストをMakefileのターゲットとして使用するには?
FILES = file1.cpp file2.cpp file3.cpp
は今、私はこのような各ターゲットを指定せずに、特殊なコマンドを使用して、それらのそれぞれをコンパイルするとします。
file1.o : file1.cpp
custom_command file1.cpp
file2.o : file2.cpp
custom_command file2.cpp
file3.o : file3.cpp
custom_command file3.cpp
上記の$(FILES)
変数を使用してこれを行うより良い方法はありますか?以下のような
何か:
$(FILES:.cpp=.o) : $(FILES)
custom_command $(FILES)
は...それだけは$(FILES)
変数内の各ファイルに対してこの操作を行う必要があります。
SRCS=a.c b.c
OBJS=$(SRCS:.c=.o)
$(OBJS): $(SRCS)
cc -c -o a.o a.c
cc -c -o b.o b.c
いますが、依存関係が完全であることを覚えている - それはa.o
は同様に、おそらくそうではありませんどのb.c
に依存していることを前提としています
ええ、それは私がやろうとしていることです。 –
依存関係を正確に指定する別の方法は、前提条件(GNU Make固有の機能)の[secondary expansion](https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html)を使用することです。 – ruvim