我有以下makefile
mybin.a: source1.cpp source2.cpp
g++ $^ -o $@
现在,source.cpp
包含我希望mybin.a
依赖的头文件。如果我这样做:
mybin.a: source1.cpp source2.cpp header.hpp
g++ $^ -o $@
然后不必要地编译头文件。我知道我可以这样做
mybin.a: source1.cpp source2.cpp header.hpp
g++ source1.cpp source2.cpp -o $@
但我不喜欢它,因为我必须重复两次源文件的名称。有没有办法让两个世界中最好的?
答案 0 :(得分:1)
mybin.a: source1.cpp source2.cpp header.hpp
g++ $(filter %.c %.cpp,$^) -o $@
或者,你可以采用更标准的方式做事:
%.o: %.cpp
$(CC) $(CLFAGS) $< -o $@
#...
SRCS := source1.cpp source2.cpp
OBJS := $(SRCS:.cpp=.o)
source1.o : header.hpp
mybin.a: $(OBJS)
$(CC) $(LDFLAGS) $^ -o $@