这是我的makefile:
BIN = ../mylib.a
CXX = g++5
CFLAGS = -O2 -pipe -mtune=i686 -g
#################################
default:
@echo 'Compiling socket' ; $(CXX) $(CFLAGS) -c socket.c
@echo 'Compiling fdwatch'; $(CXX) $(CFLAGS) -c fdwatch.c
@echo 'Compiling signal' ; $(CXX) $(CFLAGS) -c signal.c
@echo 'Compiling heart' ; $(CXX) $(CFLAGS) -c heart.c
@echo 'Create library static'; ar cru $(BIN) *.o
@echo 'Compiling'; ranlib $(BIN)
@echo 'Delete .obj files'; rm -f *.o
所以这是我的问题..
假设我有100个文件。我想编译它们。
我在特定文件中进行更改。 当我运行命令时,从0开始生成所有这些文件。重建必须再次等待,直到重建所有文件。
现在我想问他们如何更改上面的makefile来重新编译该文件改变了我。
答案 0 :(得分:1)
怎么样
.PHONY: all clean
BIN = ../mylib.a
CXX = g++5
CFLAGS = -O2 -pipe -mtune=i686 -g
#################################
SOURCEFILES=socket.c fdwatch.c signal.c heart.c
all: $(BIN)
clean:
@echo Delete .obj files
@rm -f *.o
%.o: %.c
@echo Compiling $*
@$(CXX) $(CFLAGS) -c $^ -o $@
$(BIN): $(SOURCEFILES:%.c=%.o)
@echo Create static library
@ar cru $(BIN) $^
@echo Compiling
@ranlib $(BIN)