UnixプラットフォームのC++プログラマーは、Makefileを作成および管理するためにどのようなアプローチを使用しますか?
プロジェクトに手作りのMakefileを使用していましたが、ヘッダーファイルの変更やその他の依存関係を処理しません。私はグーグルで検索し、ここで良い解決策を見つけました。
しかし、私はここでsedコマンドで問題に遭遇しました-
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $*.P; \
問題は、3番目の式 "-e's / * \ $$ //'にあります。これは機能しません。末尾の円記号を削除することになっています。これは、の一部であるため、2ドル必要があることを理解しています。 Makefile。誰かがここで何が悪いのか教えてもらえますか?
これが完全なMakefileです-
CC=g++
CFLAGS=-g -Wall
LIBS=-lpthread
OBJS=file1.o file2.o
TARGET=testProg
$(TARGET) : $(OBJS)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
%.o : %.cpp
$(CC) -MMD -c -o $@ $< $(CFLAGS)
@cp $*.d $*.P; \
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $*.P; \
rm -f $*.d
-include $(OBJS:%.o=%.P)
clean :
rm -f $(TARGET) $(OBJS)
all : $(TARGET)
この問題の解決策とは別に、私の最初の質問に対するいくつかのヒント/ポインターも欲しいです。