У меня следующая структура каталогов
(root)
/ / \ \
/ | | \
src obj include bin
Я бы хотел использовать неявное правило для компиляции всех файлов .cc
в root\src
до .o
файлов в root\obj
.
Пока это мой make-файл:
basedir = .
incl = ${basedir}\include
obj = ${basedir}\obj
src = ${basedir}\src
lib = ${basedir}\lib
bin = ${basedir}\bin
CXX = gcc
LDLIBS = -lstdc++ -lmingw32 -lSDLmain -lSDL -lSDL_image -lchipmunk -lSDL_ttf \
-lSDL_mixer
LDFLAGS = -L${lib}
objects = $(addprefix ${obj}\, GameObject.o PhysicalObject.o \
Terrain.o Timer.o main.o ImageLoader.o Player.o )
sources = $(addprefix ${src}\, GameObject.cc PhysicalObject.cc \
Terrain.cc Timer.cc main.cc ImageLoader.cc Player.cc )
Cyborg : ${objects}
${CXX} ${objects} -o ${bin}\Cyborg.exe -L${lib} ${LDFLAGS} ${LDFLAGS}
${obj}\%.o : ${src}\%.c
${CXX} ${src}\$^ -c -o ${obj}\$@
.PHONY: clean
clean :
rm ${bin}\Cyborg.exe ${objects}
Я получаю ошибку make: *** No rule to make target .\obj\GameObject.o, needed by Cyborg. Stop.
Есть идеи, что не так? Я довольно плохо знаком с make-файлами, так что это может быть ужасно очевидно.