你如何自动化make文件?

时间:2011-03-02 20:49:58

标签: makefile

如何让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

3 个答案:

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