如何让makefile通过一个.cpp文件列表然后单独编译,就像这样做是静态的?
test: test.o
g++ -o test test.o
test.o: test.cc test.hh
g++ -c test.cc
但动态地从这个?
SOURCES = main.cpp someClass.cpp otherFile.cpp
答案 0 :(得分:2)
OBJECTS = main.o someClass.o otherFile.o
all: $OBJECTS
%.o: %.cc
g++ $< -c -o $@
如果你想为每个模块强制执行类似命名的标题,那么你可以:
OBJECTS = main.o someClass.o otherFile.o
all: $OBJECTS
%.o: %.cc %.hh
g++ $< -c -o $@
答案 1 :(得分:1)
automake让这更容易:
program_SOURCES = main.cpp someClass.cpp otherFile.cpp
将从列出的源文件中构建program
。唯一的问题是它与autoconf一起使用,这可能需要一些时间才能正确设置。 (至少,我第一次做对了。)
答案 2 :(得分:0)
您也可以尝试:
SOURCES=$(shell ls *.cpp)
OBJECTS=$(SOURCES:%.cpp=%.o)
%.o: %.cpp
g++ -c %< -o $@
这样您就不必指定任何cpp名称。您添加的任何新源文件都将自动被选中。但是,这只适用于Unix shell。