メイクファイルを希望どおりに動作させるのに苦労しています。まず、これは POSIX の make であると言いたいと思います。http: //www.opengroup.org/onlinepubs/009695399/utilities/make.html のように、BSD と GNU (Linux) の両方で動作するビルド システムが必要です。 .
私が望んでいるのは、メンテナンス不要のメイクファイルです。すべての .c および .asm ファイルを src/ にコンパイルし、オブジェクト ファイルを objs/ に配置してから、objs/ 内のすべてをバイナリ ファイルにリンクするだけです。
いろいろできるのですが、ソースファイルとobjファイルを分けてもらうことができません。
組み込みのシェル スクリプト (POSIX 定義の /bin/sh を使用) が少し必要な場合は問題ありませんが、依存関係を正しく機能させることができません。ソース ファイルの方が新しい場合にのみ、オブジェクト ファイルをビルドするようにします。
私の最も近いものはこれです:
${C_OBJS}: ${HDRS} ${*:objs/%=src/%}.c ${CC} ${CFLAGS} -c ${*:objs/%=src/%}.c -o $*.o
これには、まだ C_OBJS=objs/foo.o などを指定する必要があるという問題があります。また、POSIX ではないため、BSD make でコンパイルされますが、GNU make ではコンパイルされません。