Задача
У меня есть следующая структура каталогов и файлов:
Makefile
main.cpp
|source
|-A.cpp
|-B.cpp
|-Linker.h
|build
И каждый файл имеет такую структуру
main.cpp
//main.cpp
#include "source/Linker.h"
int main(){
A(...)
B(...)
}
Linker.h
//Linker.h
void A
void B
a.cpp
B.cpp
каждый определяет определенную функцию.
Мне нравится строить эту структуру, используя Makefile
и , помещая все файлы .o
в каталог build
.
Что я пробовал
Итак, я сделал следующее Makefile
:
CC = g++ -std=c++11
CFLAGS = -c -Wall
OBJS = ./build/main.o ./build/A.o ./build/B.o
OUT = Project
all: Project
Project: $(OBJS)
$(CC) $(OBJS) -o Project
./build/main.o: main.cpp
$(CC) $(CFLAGS) main.cpp
./build/A.o: ./source/A.cpp
$(CC) $(CFLAGS) ./source/A.cpp
./build/B.o: ./source/B.cpp
$(CC) $(CFLAGS) ./source/B.cpp
Error
Но при этом создаются все файлы .o
в верхнем каталоге со следующей ошибкой:
g++: error: ./build/main.o: No such file or directory
g++: error: ./build/A.o: No such file or directory
g++: error: ./build/B.o: No such file or directory
Как мне поступить?