Existem vários problemas:
Primeiro, sua variável OBJ não se refere a uma lista de arquivos criados. Por exemplo, quando você tiver arquivos de origem src / a.cpp e src / b.cpp, o OBJ conterá obj / a e obj / b. Então use OBJ_O ao invés de OBJ.
Em segundo lugar, seu destino para criar os arquivos OBJ não fornece dependências entre os arquivos .cpp e .o. É um problema que você escreve sua regra para criar os arquivos .o dessa forma, porque você não pode fornecer informações de dependência nessa linha. Eu reescreveria completamente essa regra para criar arquivos .o:
../obj/%.o: ../src/%.cpp
$(CC) $(CFLAGS) $(INCL) -o "$@" "$<"
Isso cria cada arquivo .o separadamente e cada arquivo .o depende do arquivo .cpp correspondente.
Esta é uma regra para criar um arquivo ../obj/**.o
de cada arquivo que corresponda a ../src/**.cpp
.