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
Owner: | changed from sokolov, sviridkin, lapshin, suvorov, huletski, alferov to Sokolov Viacheslav |
---|
comment:2 Changed 5 years ago by
comment:3 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:4 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:5 Changed 5 years ago by
Сейчас не работает 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 в заголовочные файлы
comment:6 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:7 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Note: See
TracTickets for help on using
tickets.
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
должна была отрабатывать (иначе пользователь не останется доволен).