Я следующий Makefile:Создание/улучшающий Makefile
CC = g++
CFLAGS=-c -Wall
all: myProgram
myProgram: obj/main.o obj/Class1.o obj/Class2.o
$(CC) -o bin/myProgram obj/main.o obj/Class1.o obj/Class2.o
obj/main.o: main.cpp
$(CC) $(CFLAGS) main.cpp -o obj/main.o
obj/Class1.o: src/Class1.cpp
$(CC) $(CFLAGS) src/Class1.cpp -o obj/Class1.o
obj/Class2.o: src/Class2.cpp
$(CC) $(CFLAGS) src/Class2.cpp -o obj/Class2.o
Идея заключается в том у меня есть такая структура файлов/каталогов:
/project
Makefile
main.cpp
/src
Class1.cpp
Class2.cpp
/obj
Class1.obj
Class2.obj
/bin
myProgram
/inc
Class1.h
Class2.h
В Makefiles принимает источники и файлы в этих каталогах объекта и выводит их в/bin как myProgram
.
Я знаю, что мой make-файл может выглядеть не очень идеальным, но в любом случае. Я хочу узнать, как создавать make-файлы, так что вы рекомендуете мне добавить в мой make-файл или узнать дополнительно о make-файлах в качестве следующего шага для улучшения моих знаний? (Я мог бы работать над проектом, где мне нужно будет знать make-файлы, поэтому я пытаюсь их изучить)
Ваш вопрос скорее всего будет закрыт, так как он просто вызывает споры. Масштабирование Makefile для сложного проекта в нескольких каталогах - это не самая простая вещь в мире, и я видел много способов, которыми люди это делают. Если можете, возьмите свою команду и свое «Я» в «Скинсон». Если вам нужно придерживаться их, проверьте расширения gmake и выясните способы достижения того, что вы хотите более легко. – dsign
Кроме того, ваш Makefile не учитывает зависимости от файлов заголовков. Makefiles не делают этого автоматически, но есть некоторый «простой» способ, зависящий от компилятора, сделать это ... – dsign
'CC = g ++' - ** Нет. ** 'CC = gcc'. Если вы хотите C++, это 'CXX'. –