Sto cercando di utilizzare Makefile per compilare un gruppo di .cpp
file che si trovano in src/code/*.cpp
, quindi compilare ogni *.o
in build/
, e infine di generare eseguibili con quelle build/
pure.Makefile: Compilare dalla directory in un'altra directory
Ho letto un paio di risposte con cui ho provato a lavorare ma ho riscontrato problemi che non capisco.
CC = g++
FLAGS = -g -c
SOURCEDIR = /src/code
BUILDDIR = build
EXECUTABLE = DesktopSpecificController
SOURCES = $(wildcard src/code/*.cpp)
OBJECTS = $(patsubst src/code/*.cpp,build/%.o,$(SOURCES))
all: dir $(BUILDDIR)/$(EXECUTABLE)
dir:
mkdir -p $(BUILDDIR)
$(BUILDDIR)/$(EXECUTABLE): $(OBJECTS)
$(CC) $^ -o [email protected]
$(OBJECTS): $(BUILDDIR)/%.o : $(SOURCEDIR)/%.cpp
$(CC) $(FLAGS) $< -o [email protected]
clean:
rm -f $(BUILDDIR)/*o $(BUILDDIR)/$(EXECUTABLE)
faccio il seguente errore, e io non so perché:
Makefile:19: target `src/code/main.cpp' doesn't match the target pattern
Vedo anche che quando si cerca di costruire il file eseguibile, non sta usando i file .o, quindi sembra che la mia regola sia sbagliata qui.
appena aggiornato un po 'il mio Makefile. – user1777907