Eclipse автоматически сгенерировал мне make-файл, как он работает? - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть проект Eclipse с Makefile, который был сгенерирован при создании проекта.Я переместил Makefile и все связанные файлы из содержащей их папки (исходной папки проекта) в другую папку (папку проекта git), предположив (неправильно), что из-за того, что было изменено только имя содержащей папки, а не размещение файлов вПо отношению друг к другу, Makefile все равно сможет найти файлы, используя относительные пути.Ниже приведен Makefile.

Makefile:

PROJECT_ROOT = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))

OBJS = testingProject.o

ifeq ($(BUILD_MODE),debug)
    CFLAGS += -g
else ifeq ($(BUILD_MODE),run)
    CFLAGS += -O2
else
    $(error Build mode $(BUILD_MODE) not supported by this Makefile)
endif

all:    testingProject

testingProject: $(OBJS)
    $(CXX) -o $@ $^

%.o:    $(PROJECT_ROOT)%.cpp
    $(CXX) -c $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) -o $@ $<

%.o:    $(PROJECT_ROOT)%.c
    $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

clean:
    rm -fr testingProject $(OBJS)

Я предполагаю, что PROJECT_ROOT = $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) относится к абсолютному пути к файлу, а не к пути к папке проекта маршрута, это правильно?Какой путь это на самом деле указывает?Как бы это исправить, чтобы иметь: корневую папку, которая содержит основной файл cpp testingProject.cpp и Makefile, и подпапку с именем build, которая содержит скомпилированный вывод, который может быть запущен как ./testingProject, а также testingProject.o?

Текущая ошибка сборки выглядит следующим образом:

11:56:13 **** Incremental Build of configuration Default for project test ****
make all 
Makefile:11: *** recipe commences before first target. Stop.
"make all" terminated with exit code 2. Build might be incomplete.

Заранее спасибо!

...