Я пытаюсь собрать make-файл, который будет брать исходные файлы из каталога (например, src
), компилировать их в объектные файлы в другом каталоге (например, build
), а затем взять эти файлы и создайте статическую библиотеку из них в главном каталоге.
Вот мои усилия на данный момент:
LIBNAME := test
LIBNAME := lib$(LIBNAME).a
CC = g++
CFLAGS := -O0 -Wall -g -fPIC
INCLUDE := include
SOURCE := src
BUILD := build
CPPFILES := $(foreach dir, $(SOURCE)/, $(notdir $(wildcard $(SOURCE)/*.cpp)))
OBJFILES := $(addprefix $(BUILD)/, $(CPPFILES:.cpp=.o))
all: $(LIBNAME) $(OBJFILES)
$(LIBNAME): $(OBJFILES)
ar rcs $(LIBNAME) $(OBJFILES)
.cpp.o:
$(CC) $(CFLAGS) -I$(INCLUDE) -c $< -o $@
clean:
rm -rf $(BUILD)
Что дает мне это:
make: *** No rule to make target `build/point.o', needed by `libtest.a'. Stop