如何在makefile中执行此操作?

时间:2015-05-03 22:20:10

标签: 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来重新编译该文件改变了我。

1 个答案:

答案 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)