Слайды и текст доклада
Pic.1
Многофайловый проект. Автоматизация сборки проекта.
Pic.2
Недостатки однофайловых проектов Одновременная работа над программой нескольких программистов становится неэффективной. Ориентирование в тексте программы становится сложным. Даже при локальном …
Pic.3
Преимущества многофайловой организации проекта Позволяет распределить работу над проектом между несколькими программистами. Код программы более удобочитаем. Сокращает время повторной компиляции. …
Pic.4
Компиляция многофайлового проекта // hello. c #include <stdio. h> void hello(void) { printf("Hello!\n"); }
Pic.5
Компиляция многофайлового проекта // hello. c #include <stdio. h> void hello(void) { printf("Hello!\n"); }
Pic.6
Компиляция многофайлового проекта
Pic.7
Компиляция многофайлового проекта // hello. c #include <stdio. h> void hello(void) { printf("Hello!\n"); }
Pic.8
Компиляция многофайлового проекта
Pic.9
Заголовочные файлы // hello. c #include <stdio. h> void hello(void) { printf("Hello!\n"); } // hello. h void hello(void);
Pic.10
Заголовочные файлы // list. h struct list_node { void *data; struct list_node *next; }; // . . .
Pic.11
Заголовочные файлы // list. h #ifndef __LIST_H__ #define __LIST_H__ struct list_node { void *data; struct list_node *next; }; // . . . #endif // __LIST_H__
Pic.12
«Большой» проект Компиляция c99 -Wall -Werror -pedantic -c hello. c c99 -Wall -Werror -pedantic -c buy. c c99 -Wall -Werror -pedantic -c main. c c99 -Wall -Werror -pedantic -c test. c Компоновка c99 …
Pic.14
Утилита make make — утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. GNU Make (рассматривается далее) BSD Make Microsoft Make (nmake)
Pic.15
Утилита make: принципы работы Необходимо создать так называемый сценарий сборки проекта (make-файл). Этот файл описывает отношения между файлами программы; содержит команды для обновления каждого …
Pic.16
Сценарий сборки проекта цель: зависимость_1 . . . зависимость_n [tab]команда_1 [tab]команда_2 . . . [tab]команда_m
Pic.17
Простой сценарий сборки greeting. exe : hello. o buy. o main. o gcc -o greeting. exe hello. o buy. o main. o test_greeting. exe : hello. o buy. o test. o gcc -o test_greeting. exe hello. o buy. o …
Pic.18
Использование переменных и комментариев Строки, которые начинаются с символа #, являются комментариями. Определить переменную в make-файле можно следующим образом: VAR_NAME := value Чтобы получить …
Pic.19
Использование переменных и комментариев # Компилятор CC := gcc # Опции компиляции CFLAGS := -std=c99 -Wall -Werror -pedantic # Общие объектные файлы OBJS := hello. o buy. o greeting. exe : $(OBJS) …
Pic.20
Использование переменных и комментариев hello. o : hello. c hello. h $(CC) $(CFLAGS) -c hello. c buy. o : buy. c buy. h $(CC) $(CFLAGS) -c buy. c main. o : main. c hello. h buy. h $(CC) $(CFLAGS) -c …
Pic.21
Автоматические переменные Автоматические переменные - это переменные со специальными именами, которые «автоматически» принимают определенные значения перед выполнением описанных в правиле команд. …
Pic.22
Автоматические переменные # Компилятор CC := gcc # Опции компиляции CFLAGS := -std=c99 -Wall -Werror -pedantic # Общие объектные файлы OBJS := hello. o buy. o greeting. exe : $(OBJS) main. o $(CC) $^ …
Pic.23
Автоматические переменные hello. o : hello. c hello. h $(CC) $(CFLAGS) -c $< buy. o : buy. c buy. h $(CC) $(CFLAGS) -c $< main. o : main. c hello. h buy. h $(CC) $(CFLAGS) -c $< test. o : …
Pic.24
Шаблонные правила %. расш_файлов_целей : %. расш_файлов_зав [tab]команда_1 [tab]команда_2 . . . [tab]команда_m
Pic.25
Шаблонные правила # Компилятор CC := gcc # Опции компиляции CFLAGS := -std=c99 -Wall -Werror -pedantic # Общие объектные файлы OBJS := hello. o buy. o greeting. exe : $(OBJS) main. o $(CC) $^ -o $@ …
Pic.26
Сборка программы с разными параметрами компиляции # Компилятор CC := gcc # Опции компиляции CFLAGS := -std=c99 -Wall -Werror -pedantic # Общие объектные файлы OBJS := hello. o buy. o ifeq ($(mode), …
Pic.27
Сборка программы с разными параметрами компиляции # Финальная сборка: исключим отладочную информацию и утверждения (asserts) CFLAGS += -DNDEBUG -g0 endif greeting. exe : $(OBJS) main. o $(CC) $^ -o …
Pic.28
Литература Черновик стандарта C99 Б. Керниган, Д. Ритчи Язык программирования С Артур Гриффитс, GCC: Настольная книга пользователей, программистов и системных администраторов. Различные циклы уроков …
Скачать презентацию
Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!