Содержание
- 2. Недостатки однофайловых проектов Одновременная работа над программой нескольких программистов становится неэффективной. Ориентирование в тексте программы становится
- 3. Преимущества многофайловой организации проекта Позволяет распределить работу над проектом между несколькими программистами. Код программы более удобочитаем.
- 4. Компиляция многофайлового проекта // hello.c #include void hello(void) { printf("Hello!\n"); } // main.c int main(void) {
- 5. Компиляция многофайлового проекта // hello.c #include void hello(void) { printf("Hello!\n"); } // main.c int main(void) {
- 6. Компиляция многофайлового проекта main.c: В функции «main»: main.c:3:5: ошибка: неявная декларация функции «hello» [-Werror=implicit-function-declaration] cc1.exe: все
- 7. Компиляция многофайлового проекта // hello.c #include void hello(void) { printf("Hello!\n"); } // main.c void hello(void); int
- 8. Компиляция многофайлового проекта c99 –o hello.exe hello.o ../libmingw32.a(main.o): In function `main': ../mingw/main.c:73: undefined reference to `WinMain@16'
- 9. Заголовочные файлы // hello.c #include void hello(void) { printf("Hello!\n"); } // hello.h void hello(void); // main.c
- 10. Заголовочные файлы // list.h struct list_node { void *data; struct list_node *next; }; // ... //
- 11. Заголовочные файлы // list.h #ifndef __LIST_H__ #define __LIST_H__ struct list_node { void *data; struct list_node *next;
- 12. «Большой» проект Компиляция c99 -Wall -Werror -pedantic -c hello.c c99 -Wall -Werror -pedantic -c buy.c c99
- 13. Граф зависимостей
- 14. Утилита make make — утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. GNU Make
- 15. Утилита make: принципы работы Необходимо создать так называемый сценарий сборки проекта (make-файл). Этот файл описывает отношения
- 16. Сценарий сборки проекта цель: зависимость_1 ... зависимость_n [tab]команда_1 [tab]команда_2 ... [tab]команда_m
- 17. Простой сценарий сборки greeting.exe : hello.o buy.o main.o gcc -o greeting.exe hello.o buy.o main.o test_greeting.exe :
- 18. Использование переменных и комментариев Строки, которые начинаются с символа #, являются комментариями. Определить переменную в make-файле
- 19. Использование переменных и комментариев # Компилятор CC := gcc # Опции компиляции CFLAGS := -std=c99 -Wall
- 20. Использование переменных и комментариев hello.o : hello.c hello.h $(CC) $(CFLAGS) -c hello.c buy.o : buy.c buy.h
- 21. Автоматические переменные Автоматические переменные - это переменные со специальными именами, которые «автоматически» принимают определенные значения перед
- 22. Автоматические переменные # Компилятор CC := gcc # Опции компиляции CFLAGS := -std=c99 -Wall -Werror -pedantic
- 23. Автоматические переменные hello.o : hello.c hello.h $(CC) $(CFLAGS) -c $ buy.o : buy.c buy.h $(CC) $(CFLAGS)
- 24. Шаблонные правила %.расш_файлов_целей : %.расш_файлов_зав [tab]команда_1 [tab]команда_2 ... [tab]команда_m
- 25. Шаблонные правила # Компилятор CC := gcc # Опции компиляции CFLAGS := -std=c99 -Wall -Werror -pedantic
- 26. Сборка программы с разными параметрами компиляции # Компилятор CC := gcc # Опции компиляции CFLAGS :=
- 27. Сборка программы с разными параметрами компиляции # Финальная сборка: исключим отладочную информацию и утверждения (asserts) CFLAGS
- 29. Скачать презентацию