タイトルが意味をなさないかどうかわからないので、少し詳しく説明します。
gcc の自動依存リスト ジェネレーターを使用するこの makefile をいじっています。
同時に、ソース、ヘッダー、およびリソースを分離する、適切にソートされたディレクトリ構造を維持したいと考えました。
レイアウトはこのようにシンプルでいいですね
- 主要
- ソース
- 含む
- オブジェクト
- 依存関係
これで、makefile 依存関係リスト ジェネレーター atm は次のようになります。
$(DEP_PATH)%.d : $(SRC_PATH)%.c
@${CC} $(CFLAGS) -MM -c $(INCLUDE) $< > $(DEP_PATH)$*.d
include $@
ここでの考え方は、依存関係ルールを生成し、それを make ビルドに含めるというものです。
そして、たとえば foo1.o の結果は次のとおりです。
foo1.o: src/foo1.c include/foo1.h include/foo2.h include/foo3.h
すべてのオブジェクトがメイン ディレクトリにあるようにラベル付けした場合、これはうまく機能しますが、代わりに /main/objects にあるため、make は /main/objects/foo1 のルールが見つからないと言っています。 o
今、私はこれを試しました:
@echo "$(OBJ_PATH)" > $(DEP_PATH)$*.d
@${CC} $(CFLAGS) -MM -c $(INCLUDE) $< >> $(DEP_PATH)$*.d
> はオブジェクトパスを新しい/上書きされたファイルにフィードし、GCC 自動依存ルールの生成をそれに連結します...しかし、2 つのセットの間に改行を追加します。
上記の情報を含む2つの個別のファイルをcat'ingしようとしました...しかし、改行も取得します。
改行を追加せずに依存関係ファイルを追加する良い方法はありますか?
また、makefile、cat、および echo に関する本当に優れたチュートリアルがあれば、本当に感謝します。
すべての応答に感謝します。