Opened 5 years ago

Closed 5 years ago

#5 closed ожидаются исправления (задача сдана)

WW #1

Reported by: Денис Лочмелис Owned by: Sokolov Viacheslav
Component: WW_make Version: 2.0
Keywords: Cc:

Description


Change History (7)

comment:1 Changed 5 years ago by Sokolov Viacheslav

Owner: changed from sokolov, sviridkin, lapshin, suvorov, huletski, alferov to Sokolov Viacheslav

comment:2 Changed 5 years ago by Sokolov Viacheslav

make работает, это хорошо. Вторая часть зачтена, ошибки на месте. Пока что не совсем хорошо:

1) не работает make clean. Target clean декларирован, но сама цель не реализована. Реализацию нужно добавить, она должна удалять бинарные файлы.

2) Цель make debug не исполняется. Лучше ее просто удалить.

3) -Ibin не нужен, потому что в этой директории нет (и не должно быть) заголовочных файлов.

4) Лучше выделить создание объектного файла main.o в отдельную цель, равно как и компоновку всех объектных файлов (включая main.o) в исполняемый.

5) Цели допускают любые названия, но лучше, если они не совпадают с именами файлов. Поэтому лучше переименовать цели, например, так: io.o -> compile_io

6) В OS Linux не принято давать файлам расширение .exe (потому что является файл исполняемым или нет задается отдельно, подробнее можно почитать, например, здесь https://losst.ru/komanda-chmod-linux ). Лучше именовать исполняемый файл просто lab_01.

7) Цель clean является важной даже в случае, если проект не собирается. Это способ обратить процесс сборки, пусть он и не завершился успехом. Поэтому в настоящем проекте даже в случаях lab_01_corrupted* команда make clean должна была отрабатывать (иначе пользователь не останется доволен).

comment:3 Changed 5 years ago by Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

comment:4 Changed 5 years ago by Sokolov Viacheslav

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:5 Changed 5 years ago by Sokolov Viacheslav

Сейчас не работает make clean. Обращаю внимание, что целевая платформа - linux. Команды del не существует, /S /Q это флаги под Windows.

Что еще можно сделать лучше:

  • цели должны соответствовать файлам, чтобы повторный запуск make ничего не делал: не io.o, а bin/io.o. Чтобы после изменения исходных файлов компиляция все же запускалась, нужно добавить исходные файлы в зависимости. Их можно достать, например, с помощью запуска gcc -MM. То есть два варианта: либо цель совпадает с файлом, который получается на выходе (как в случае объектных файлов) и для нее работает механизм версионирования на основании времени последнего изменения, либо цель стоит именовать в соответствии с тем, что именно она делает (например, compile_... )
  • цели, которые не соответсвуют файлам на диске, стоит поместить в секцию .PHONY:
  • быть внимательнее к codestyle. Не смешивать разные стили в рамках одного проекта. Либо пробелы, либо табуляции. Я бы рекомендовал использовать пробелы, потому что в таком случае текст будет отображаться одинаково, независимо от раскрытия табуляций. Также я бы рекомендовал каждый scope, включая if SCOPE else SCOPE заключать в {}. Это упрощает чтение и модификацию кода.
  • добавить #pragma once в заголовочные файлы
Last edited 5 years ago by Sokolov Viacheslav (previous) (diff)

comment:6 Changed 5 years ago by Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

comment:7 Changed 5 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.