У меня есть проект 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.
Заранее спасибо!