Unix 平台上的 C++ 程序员使用什么方法来创建和管理 Makefile?
我为我的项目使用了手工制作的 Makefile,但它们不处理头文件更改和其他依赖项。我用谷歌搜索并在这里找到了一个很好的解决方案。
但是我在 sed 命令中遇到了一个问题-
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $*.P; \
问题在于第三个表达式“-e's/ *\$$//'。它不起作用。它应该删除尾随反斜杠。我知道那里必须有双美元,因为这是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)
除了这个问题的解决方案,我还想要一些提示/指向我的第一个问题。