Я пытаюсь связать весь объект, который я создал в своем make файле во время исполняемой компиляции, но я не могу автоматизировать выбор каталога сборки.
Я пытался:
test: $(OBJECTS)
$(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $(BUILDDIR)/$^ test.cpp -o test.exe
Проблема в том, что $(BUILDDIR)/$^
только вставляет $(BUILDDIR)
перед первым объектным файлом.
Как я должен это делать?
Если вы хотите добавить $(BUILDDIR)
ко всем предварительным требованиям непосредственно в команде, вы можете сделать следующее:
test: $(OBJECTS)
$(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $(addprefix $(BUILDDIR)/,$^) test.cpp -o test.exe
Однако настройка make rules таким образом означает, что вы неправильно отслеживаете зависимости. Я думаю, что вы действительно хотите это:
test: $(addprefix $(BUILDDIR)/,$(OBJECTS))
$(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $^ test.cpp -o test.exe
OBJECTS = $(addprefix $(BUILDDIR)/,$(SOURCES:.cpp=.o))
. Есть причина не делать этого?