c сделать файлы, как сделать тот, который скомпилирует четыре исходных файла? - PullRequest
3 голосов
/ 01 февраля 2012

Это моя домашняя работа. Я ищу помощь в том, как создать «make-файл», который скомпилирует три исходных файла. Из которых будет называться «timestable.c tablein.c tableout.c timestable.h». Это четыре исходных файла. Я создал make-файл для этого, что я считаю правильным, но я не уверен, как проверить его, чтобы увидеть, будет ли он компилироваться? Вот содержимое моего make-файла:

timestable.exe: timestable.c tablein.c tableout.c timestable.h
    cl timestable.c tablein.c tableout.c timestable.h 

Это правильно? Этот make-файл должен создать программу под названием timestable.exe с помощью команды Visual Studio cl и обеспечить функциональность clean . Я не понимаю, что мне говорят, когда учитель упомянул функциональность " clean ". Я не уверен, что этот make-файл действительно работает для создания этого файла, потому что я не уверен, как его запустить.

Кроме того, если вы, ребята, не против дать мне ссылку или рассказать больше информации о командах make-файла для системы на базе Windows. Я хочу создать и "дополнительную функцию" в моем make-файле, потому что это даст мне лучшие оценки, и я не знаю, что еще я мог бы сделать.

Спасибо заранее.

БОЛЬШОЕ РЕДАКТИРОВАНИЕ: Итак, немного поиграв, я понял, что если я изменю файл makefile.txt на makefile.bat и открою командную строку Visual Studio cmd, войду в правильный каталог и введите (я знаю, что у меня нет чтобы запустить приглашение cmd для запуска файла .bat):

 makefile.bat 

попытается скомпилировать все файлы. Проблема в том, что он не работает с файлом ".h", а именно с файлом timestable.h. Также не работала команда «timestable.exe». Есть идеи, что здесь делать?

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

(Кстати, что произойдет, если вы запустите cl timestable.c tablein.c tableout.c timestable.h вручную?)

Обычно вы хотите написать Makefile для компиляции ваших .c файлов в .obj файлов, используя шаблон правил , который знает, как скомпилировать один файл .c в файл .obj, а затем другое правило, которое знает, как связать все файлы .obj в один исполняемый объект.(Одним из важных преимуществ является то, что это позволяет перестраивать только те части, которые были изменены. Ваш Makefile до сих пор будет требовать перекомпиляции всех входных файлов при каждом изменении.)

Когда у вас так много файлов .objесли вы захотите, вы можете захотеть make clean, который удалит все объектные файлы и исполняемые файлы, которые можно восстановить из исходных текстов.Это может быть так же просто, как объявить clean фальшивой целью, а затем удалить все файлы, которые могут быть восстановлены.

Обратите внимание, что Makefiles по соглашению называются Makefile или makefile или GNUmakefile,(GNU make фактически ищет файлы в обратном порядке к этому списку, но Makefile - единственное имя, которое мне нравится.) Если вы используете одно из этих имен, тогда вы можете просто запустить make foo для запуска цели foo.Если вы выбираете другое имя для вашего Makefile, то вам также нужно использовать опцию командной строки -f filename, чтобы выбрать другой файл, и , что раздражает.Иногда необходимо.)

0 голосов
/ 01 февраля 2012

Конечно, ваш учитель / школа предоставили некоторые примечания к курсу, где объясняются основы make / nmake, если они ожидают, что вы будете использовать его для домашней работы; или, по крайней мере, некоторые ссылки на онлайн-материалы?
Вы, похоже, не понимаете, что такое make-файл и как вы его используете. Вы не запускаете его непосредственно из командной строки, как пакетный скрипт, но вам нужна программа (называемая make или nmake, если вы используете Visual Studio); make-файл - это своего рода скрипт ввода, который читается этой программой. Затем программа использует информацию в make-файле, чтобы определить, какие команды нужно выполнить для обновления основной цели.

Вы должны быть в состоянии найти некоторые учебники, которые описывают основы make гораздо лучше, чем я могу сделать здесь. Быстрый поиск в Google для make tutorial пришел по этой ссылке: http://www.eng.hawaii.edu/Tutor/Make/. Я просмотрел его, и это похоже на хорошее введение (в нем используются рисунки и короткие разделы, так что это должно быть хорошо, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...