Обучение макетам

Я пытаюсь изучить make-файлы. Я должен выполнить назначение для моего classа администрирования / программирования Unix, который включает создание файла makefile для трех файлов: saving.h saving.cpp и savingTest.cpp. Мой учитель не очень много рассказывал нам о make-файлах. Я посмотрел в своей книге, и я понимаю общую идею, но у меня возникают проблемы с синтаксисом. Я следовал примеру моей книги, но я получаю сообщение об ошибке. Вот мой код для файла makefile:

savingsTest.0: savingsTest.cpp savings.cpp savings.h cc -c savingsTest.cpp savings.o: savings.cpp savings.h cc -c savings.cpp 

Это ошибка, которую я получаю:

  cc -c savingsTest.cpp cc: No input file specified, no output generated *** Error code 1 make: Fatal error: Command failed for target `savingsTest' v245-2% emacs makefile.txt 

Может кто-нибудь, пожалуйста, помогите мне понять синтаксис, чтобы я мог определить, что я делаю неправильно. Спасибо всем, кто отвечает на помощь.

    Вам нужно разобраться с именем вашего компилятора C ++. Я собираюсь предположить, что это CC , но есть много других имен ( g++ ).

    Ваша программа savingsTest.0 зависит от двух объектных файлов: savings.o и savingsTest.o . Файл savings.o зависит от savings.cpp и savings.h . Файл savingsTest.o зависит от savingsTest.cpp и savings.h .

    Это все написано как:

     savingsTest.0: savings.o savingsTest.o CC -o $@ savings.o savingsTest.o savingsTest.o: savingsTest.cpp savings.h CC -c savingsTest.cpp savings.o: savings.cpp savings.h CC -c savings.cpp 

    Возможно, вы могли бы оставить две последние строки командной строки; make знает, как скомпилировать .cpp для .o .

    Вы научитесь использовать macros в своем makefile . $@ – это имя создаваемой программы или файла (поэтому это сокращение для savingsTest.0 ). Есть причины его использовать – особенно, не повторяйте себя.

    Обычно вы должны использовать macros для команд и аргументов команды, для библиотек и для списков файлов.