Uczę się jak tworzyć makefile, póki co to wygląda w ten sposób:
CXX = clang++
WARNINGS := -Wall -Wextra -pedantic -Wshadow -Wpointer-arith -Wcast-align \
-Wwrite-strings -Wmissing-prototypes -Wmissing-declarations \
-Wredundant-decls -Wnested-externs -Winline -Wno-long-long \
-Wuninitialized -Wconversion -Wstrict-prototypes -Werror \
-pedantic
# -c: tworzy pliki .o
# -S: kod wynikowy w postaci assembly
CXXFLAGS = -std=c++14 -g -c $(WARNINGS)
# Kompilacja plików .o
FLAGS = -std=c++14 -g $(WARNINGS)
# Nazwa pliku wynikowego
BIN = program
# Pliki .o w projekcie
OBJECTS = main.o
all: $(OBJECTS) # plik1.o plik2.o plik3.o
$(CXX) $(FLAGS) $(OBJECTS) -o $(BIN)
@echo Gotowe! Wpisz ./$(BIN), aby uruchomić program.
main.o: main.cpp
$(CXX) $(CXXFLAGS) main.cpp -o main.o
clean:
rm -f $(OBJECTS)
rm $(BIN)
@echo Usunieto pliki .o i plik wykonywalny \"$(BIN)\"
tar:
tar cfv $(BIN).tar *.c *.h *.hh *.cpp
.PHONY: all clean dist check testdrivers todolist
I chciałbym, aby makefile stworzył folder, np. o nazwie objects i tam umieścił pliki .o. W jaki sposób to zrobić?