Opened 5 years ago
Closed 5 years ago
#3 closed ожидается проверка (задача сдана)
WW_1
Reported by: | Jura Khudyakov | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_make | Version: | 2.0 |
Keywords: | Cc: |
Change History (7)
comment:1 Changed 5 years ago by
comment:2 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:3 Changed 5 years ago by
Вторая часть зачтена.
Сейчас не работает повторный запуск make. Нужно поправить названия целей, чтобы они в точности соответствовали выходным файлам. (например, не bindir, а ${BIN_DIR}).
Цели, не соответствующие файлам на диске, лучше поместить в секцию .PHONY:
Стоит разбить компиляцию main.c -> main.o и компоновку всех объектных файлов в исполняемый lab1.
Стоит добавить #pragma once в заголовочные файлы.
Обращаю внимание на codestyle: не стоит смешивать в рамках одного проекта разные стили (пробелы и табуляции).
comment:4 Changed 5 years ago by
Version: | 1.0 → 2.0 |
---|
comment:5 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
Поправил названия целей, оказывается, я совершенно не понимал сути Makefile-а и того, что он ориентируется именно на время последнего обновления файлов, а не целей.
Добавил секцию .PHONY:
Разбил компиляцию
Добавил #pragma once
Прошу прощения за кодстайл, остался от предыдущих разработчиков проекта)
Ещё я подозреваю, что этот Makefile можно сократить в несколько раз с использованием каких-нибудь шаблонных выражений для всех *.c -> *.o, так как они все сейчас выглядят идентично. Но пытаться сделать это я не стал.
comment:6 Changed 5 years ago by
Шаблонизацию можно будет использовать в последующих проектах, если будет такое желание. Главная задача, которую должен решать Makefile - сборка проекта. Желательно, инкрементальная, желательно, с поддержкой разных типов сборки (Стандартно release/debug, но бывают и совсем другого сорта потребности. Например, собирать статическую / динамическую библиотеку или вообще command-line утилиту). Возможно, кроссплатформенно.
В общем в данный момент Makefile свою задачу выполняет, и на ближайшие лабораторные какой-то нужды делать что-то сложнее нет.
comment:7 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Основная цель этой лабораторной достигнута, но еще есть, что улучшить.
Про инклуды: желательно не использовать в них относительные пути, потому что это может порождать такие проблемы, как описано, например, в этом комментарии https://stackoverflow.com/a/597438 .
Вместо этого лучше прописать пути, по которым искать заголовочные файлы, с помощью опции -I :
gcc -Iinclude
Обращаю внимание, что в
main.c
происходит вызовdoComputation(5, 7.0);
, который не соответствует сигнатуреint doComputation(int a, int b);
(7.0
- неint
). Для целей данной работы это допустимо, но так лучше не делать (что произойдет при вызове?), и в дальнейшем я буду снижать баллы в таких случаях.Исполняемый файл также следует положить в
bin/
.Что там со второй частью задания?