Ваш маленький проект на C / C ++ достиг точки, когда уже не практично хранить весь код в одном файле. Вы хотите выделить несколько компонентов. Итак, вы создаете каталог src/
, а затем ... вам нужно написать настоящий Makefile. Нечто большее, чем hello: hello.o
. Э-э-э ... это было $@
или $<
или $^
? Дерьмо. Вы не помните (я никогда не помню).
Есть ли у вас простой Makefile «один размер подходит всем», который может работать с простыми исходными деревьями? Если так, что в этом и почему? Я ищу самый маленький, самый простой Makefile, который может скомпилировать каталог, полный файлов C, без необходимости редактировать Makefile каждый раз, когда я добавляю файл. Вот что у меня есть:
CXX = clang++
CXXFLAGS = ...
LDFLAGS = ...
EXENAME = main
SRCS = $(wildcard src/*.cc)
OBJS = $(patsubst src%.cc,build%.o, $(SRCS))
all: $(EXENAME)
build/%.o: src/%.cc
@mkdir -p $(dir $@)
$(CXX) -c -o $@ $^ $(CXXFLAGS)
$(EXENAME): $(OBJS)
$(CXX) -o $@ $^ $(LDFLAGS)
clean:
rm -rf $(EXENAME) build/
Этот Makefile собирает все файлы .cc
в каталоге src/
в файлы .o
в каталоге build/
, а затем связывает их в родительский каталог.
Что бы вы сделали по-другому?