任意のターゲットを取得し、gcc のラッパーのように動作するユニバーサル Makefile を、パラメーターを使用して作成することは可能ですか? たとえば、これは次のことを意味します。
make 01.c
と同じ結果になります
g++ -o 01.out 01.c
ワイルドカード - を使用できます%
。
ただし、コマンドラインで指定するのはターゲットであり、ソースではありません。必要なものであり、持っているものではありません。
あなたが望むのはおおよそのようです:
%.out: %.c
g++ -o $@ $<
つまり、(something).out を作成するには、まず (something).c があることを確認してから、g++ -o (something).out (something).c を実行します。
$@ は常にターゲット ファイルであり、$< は最初の前提条件です。
make 01.out
ではなく、実行する必要がありますmake 01.c
make
あなたがしようとしていることをするためのいくつかの「暗黙のルール」がすでにあります。
たとえば、makefile がなくても、
make 01.o
実行します:
c++ -c -o 01.o 01.cpp
01.cpp
現在のディレクトリで呼び出されたファイルが見つかった場合。CXXFLAGS
さらにフラグを渡したい場合は、環境変数を設定できます。g++
システムコンパイラではなく使用することに本当に設定されている場合はCXX=g++
、 も設定できます。