Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
28 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
132.50 kB
Просмотров:
66
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Многофайловый проект.](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img0.jpg)
Содержание слайда: Многофайловый проект.
Автоматизация сборки проекта.
№2 слайд![Недостатки однофайловых](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img1.jpg)
Содержание слайда: Недостатки однофайловых проектов
Одновременная работа над программой нескольких программистов становится неэффективной.
Ориентирование в тексте программы становится сложным.
Даже при локальном изменении перекомпилируется весь проект.
№3 слайд![Преимущества многофайловой](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img2.jpg)
Содержание слайда: Преимущества многофайловой организации проекта
Позволяет распределить работу над проектом между несколькими программистами.
Код программы более удобочитаем.
Сокращает время повторной компиляции.
Повторное использование кода.
№4 слайд![Компиляция многофайлового](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img3.jpg)
Содержание слайда: Компиляция многофайлового проекта
// hello.c
#include <stdio.h>
void hello(void)
{
printf("Hello!\n");
}
№5 слайд![Компиляция многофайлового](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img4.jpg)
Содержание слайда: Компиляция многофайлового проекта
// hello.c
#include <stdio.h>
void hello(void)
{
printf("Hello!\n");
}
№6 слайд![Компиляция многофайлового](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img5.jpg)
Содержание слайда: Компиляция многофайлового проекта
№7 слайд![Компиляция многофайлового](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img6.jpg)
Содержание слайда: Компиляция многофайлового проекта
// hello.c
#include <stdio.h>
void hello(void)
{
printf("Hello!\n");
}
№8 слайд![Компиляция многофайлового](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img7.jpg)
Содержание слайда: Компиляция многофайлового проекта
№9 слайд![Заголовочные файлы hello.c](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img8.jpg)
Содержание слайда: Заголовочные файлы
// hello.c
#include <stdio.h>
void hello(void)
{
printf("Hello!\n");
}
// hello.h
void hello(void);
№10 слайд![Заголовочные файлы list.h](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img9.jpg)
Содержание слайда: Заголовочные файлы
// list.h
struct list_node
{
void *data;
struct list_node *next;
};
// ...
№11 слайд![Заголовочные файлы list.h](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img10.jpg)
Содержание слайда: Заголовочные файлы
// list.h
#ifndef __LIST_H__
#define __LIST_H__
struct list_node
{
void *data;
struct list_node *next;
};
// ...
#endif // __LIST_H__
№12 слайд![Большой проект Компиляция c](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img11.jpg)
Содержание слайда: «Большой» проект
Компиляция
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 -o greeting.exe hello.o buy.o main.o
c99 -o test_greeting.exe hello.o buy.o test.o
№13 слайд![Граф зависимостей](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img12.jpg)
Содержание слайда: Граф зависимостей
№14 слайд![Утилита make make утилита,](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img13.jpg)
Содержание слайда: Утилита make
make — утилита, автоматизирующая процесс преобразования файлов из одной формы в другую.
GNU Make (рассматривается далее)
BSD Make
Microsoft Make (nmake)
№15 слайд![Утилита make принципы работы](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img14.jpg)
Содержание слайда: Утилита make: принципы работы
Необходимо создать так называемый сценарий сборки проекта (make-файл). Этот файл описывает
отношения между файлами программы;
содержит команды для обновления каждого файла.
Утилита make использует информацию из make-файла и время последнего изменения каждого файла для того, чтобы решить, какие файлы нужно обновить.
Утилита make предполагает, что по умолчанию сценарий сборки называется makefile или Makefile.
№16 слайд![Сценарий сборки проекта цель](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img15.jpg)
Содержание слайда: Сценарий сборки проекта
цель: зависимость_1 ... зависимость_n
[tab]команда_1
[tab]команда_2
...
[tab]команда_m
№17 слайд![Простой сценарий сборки](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img16.jpg)
Содержание слайда: Простой сценарий сборки
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 test.o
hello.o : hello.c hello.h
gcc -std=c99 -Wall -Werror -pedantic -c hello.c
buy.o : buy.c buy.h
gcc -std=c99 -Wall -Werror -pedantic -c buy.c
main.o : main.c hello.h buy.h
gcc -std=c99 -Wall -Werror -pedantic -c main.c
test.o : test.c hello.h buy.h
gcc -std=c99 -Wall -Werror -pedantic -c test.c
clean :
rm *.o *.exe
№18 слайд![Использование переменных и](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img17.jpg)
Содержание слайда: Использование переменных и комментариев
Строки, которые начинаются с символа #, являются комментариями.
Определить переменную в make-файле можно следующим образом:
VAR_NAME := value
Чтобы получить значение переменной, необходимо ее имя заключить в круглые скобки и перед ними поставить символ '$'.
$(VAR_NAME)
№19 слайд![Использование переменных и](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img18.jpg)
Содержание слайда: Использование переменных и комментариев
# Компилятор
CC := gcc
# Опции компиляции
CFLAGS := -std=c99 -Wall -Werror -pedantic
# Общие объектные файлы
OBJS := hello.o buy.o
greeting.exe : $(OBJS) main.o
$(CC) -o greeting.exe $(OBJS) main.o
test_greeting.exe : $(OBJS) test.o
$(CC) -o test_greeting.exe $(OBJS) test.o
№20 слайд![Использование переменных и](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img19.jpg)
Содержание слайда: Использование переменных и комментариев
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 main.c
test.o : test.c hello.h buy.h
$(CC) $(CFLAGS) -c test.c
clean :
$(RM) *.o *.exe
№21 слайд![Автоматические переменные](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img20.jpg)
Содержание слайда: Автоматические переменные
Автоматические переменные - это переменные со специальными именами, которые «автоматически» принимают определенные значения перед выполнением описанных в правиле команд.
Переменная "$^" означает "список зависимостей".
Переменная "$@" означает "имя цели".
Переменная "$<" является просто первой зависимостью.
Было
greeting.exe : $(OBJS) main.o
gcc -o greeting.exe $(OBJS) main.o
Стало
greeting.exe : $(OBJS) main.o
gcc $^ -o $@
№22 слайд![Автоматические переменные](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img21.jpg)
Содержание слайда: Автоматические переменные
# Компилятор
CC := gcc
# Опции компиляции
CFLAGS := -std=c99 -Wall -Werror -pedantic
# Общие объектные файлы
OBJS := hello.o buy.o
greeting.exe : $(OBJS) main.o
$(CC) $^ -o $@
test_greeting.exe : $(OBJS) test.o
$(CC) $^ -o $@
№23 слайд![Автоматические переменные](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img22.jpg)
Содержание слайда: Автоматические переменные
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 : test.c hello.h buy.h
$(CC) $(CFLAGS) -c $<
clean :
$(RM) *.o *.exe
№24 слайд![Шаблонные правила .расш](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img23.jpg)
Содержание слайда: Шаблонные правила
%.расш_файлов_целей : %.расш_файлов_зав
[tab]команда_1
[tab]команда_2
...
[tab]команда_m
№25 слайд![Шаблонные правила Компилятор](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img24.jpg)
Содержание слайда: Шаблонные правила
# Компилятор
CC := gcc
# Опции компиляции
CFLAGS := -std=c99 -Wall -Werror -pedantic
# Общие объектные файлы
OBJS := hello.o buy.o
greeting.exe : $(OBJS) main.o
$(CC) $^ -o $@
test_greeting.exe : $(OBJS) test.o
$(CC) $^ -o $@
%.o : %.c *.h
$(CC) $(CFLAGS) -c $<
clean :
$(RM) *.o *.exe
№26 слайд![Сборка программы с разными](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img25.jpg)
Содержание слайда: Сборка программы с разными параметрами компиляции
# Компилятор
CC := gcc
# Опции компиляции
CFLAGS := -std=c99 -Wall -Werror -pedantic
# Общие объектные файлы
OBJS := hello.o buy.o
ifeq ($(mode), debug)
# Отладочная сборка: добавим генерацию отладочной информации
CFLAGS += -g3
endif
ifeq ($(mode), release)
№27 слайд![Сборка программы с разными](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img26.jpg)
Содержание слайда: Сборка программы с разными параметрами компиляции
# Финальная сборка: исключим отладочную информацию и утверждения (asserts)
CFLAGS += -DNDEBUG -g0
endif
greeting.exe : $(OBJS) main.o
$(CC) $^ -o $@
test_greeting.exe : $(OBJS) test.o
$(CC) $^ -o $@
%.o : %.c *.h
$(CC) $(CFLAGS) -c $<
clean :
$(RM) *.o *.exe
№28 слайд![Литература Черновик стандарта](/documents_6/5ffc5df400d74359cc0f3f054bb5ff4b/img27.jpg)
Содержание слайда: Литература
Черновик стандарта C99
Б. Керниган, Д. Ритчи Язык программирования С
Артур Гриффитс, GCC: Настольная книга пользователей, программистов и системных администраторов.
Различные циклы уроков (tutorials) по make (например, http://habrahabr.ru/post/211751)