如何在 makefile 中执行此操作?

How to do this in makefile?

这是我的 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 以重新编译那个文件改变了我。

怎么样

.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)

?