Как вы автоматизируете файл make? - PullRequest
1 голос
/ 02 марта 2011

Как сделать так, чтобы make-файл просматривал список файлов .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 ]

2 голосов
/ 02 марта 2011
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 голос
/ 02 марта 2011

automake делает это еще проще:

program_SOURCES = main.cpp someClass.cpp otherFile.cpp

создаст program из перечисленных исходных файлов. Единственная проблема заключается в том, что он работает вместе с autoconf, что может занять некоторое время для правильной настройки. (По крайней мере, я никогда не понимаю это правильно с первого раза.)

0 голосов
/ 03 марта 2011

Вы также можете попробовать:

SOURCES=$(shell ls *.cpp)
OBJECTS=$(SOURCES:%.cpp=%.o)

%.o: %.cpp
    g++ -c %< -o $@

Таким образом, вам не нужно указывать имена cpp. Любые новые исходные файлы, которые вы добавите, будут автоматически выбраны. Однако это будет работать только в оболочках Unix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...