0

Нужен Makefile, который бы компилировал только те файлы, которые указаны в переменной SRCS.

Например, есть следующая структура файлов:

test/
    a.cpp
    b.cpp
    c.cpp
    d.cpp
    ...
    Makefile

Makefile:

SRCS = a.cpp c.cpp ...
OBJS = $(SRCS:.cpp=.o)

???

Что написать далее чтобы каждый файл из SRCS компилировался в соответствующий объектный файл из OBJS. Не все .cpp файлы, а только выбранные.

Переменная SRCS может меняться со временем. И это бывает необходимо не только для компиляции .cpp файлов в объектные .o, но и для других задач.

pank
  • 2,548

1 Answers1

1

минимально достаточно одной строки:

SRCS = a.cpp c.cpp
OBJS = $(SRCS:.cpp=.o)

all: $(OBJS)

тогда, при наличии в текущем каталоге файлов a.cpp и c.cpp, будет такой результат:

$ make
g++    -c -o a.o a.cpp
g++    -c -o c.o c.cpp

и в текущем же каталоге «волшебным образом» появятся файлы a.o и c.o.

подробности о применённой «магии» — здесь.


И это бывает необходимо не только для компиляции .cpp файлов в объектные .o, но и для других задач.

когда появятся конкретизированные новые задачи, с которыми возникнут трудности, задавайте новые вопросы. общего ответа «на все случаи жизни» — увы, нет.