🗊Презентация Многофайловый проект. Автоматизация сборки проекта

Нажмите для полного просмотра!
Многофайловый проект. Автоматизация сборки проекта, слайд №1Многофайловый проект. Автоматизация сборки проекта, слайд №2Многофайловый проект. Автоматизация сборки проекта, слайд №3Многофайловый проект. Автоматизация сборки проекта, слайд №4Многофайловый проект. Автоматизация сборки проекта, слайд №5Многофайловый проект. Автоматизация сборки проекта, слайд №6Многофайловый проект. Автоматизация сборки проекта, слайд №7Многофайловый проект. Автоматизация сборки проекта, слайд №8Многофайловый проект. Автоматизация сборки проекта, слайд №9Многофайловый проект. Автоматизация сборки проекта, слайд №10Многофайловый проект. Автоматизация сборки проекта, слайд №11Многофайловый проект. Автоматизация сборки проекта, слайд №12Многофайловый проект. Автоматизация сборки проекта, слайд №13Многофайловый проект. Автоматизация сборки проекта, слайд №14Многофайловый проект. Автоматизация сборки проекта, слайд №15Многофайловый проект. Автоматизация сборки проекта, слайд №16Многофайловый проект. Автоматизация сборки проекта, слайд №17Многофайловый проект. Автоматизация сборки проекта, слайд №18Многофайловый проект. Автоматизация сборки проекта, слайд №19Многофайловый проект. Автоматизация сборки проекта, слайд №20Многофайловый проект. Автоматизация сборки проекта, слайд №21Многофайловый проект. Автоматизация сборки проекта, слайд №22Многофайловый проект. Автоматизация сборки проекта, слайд №23Многофайловый проект. Автоматизация сборки проекта, слайд №24Многофайловый проект. Автоматизация сборки проекта, слайд №25Многофайловый проект. Автоматизация сборки проекта, слайд №26Многофайловый проект. Автоматизация сборки проекта, слайд №27Многофайловый проект. Автоматизация сборки проекта, слайд №28

Содержание

Вы можете ознакомиться и скачать презентацию на тему Многофайловый проект. Автоматизация сборки проекта. Доклад-сообщение содержит 28 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Многофайловый проект.
Автоматизация сборки проекта.
Описание слайда:
Многофайловый проект. Автоматизация сборки проекта.

Слайд 2





Недостатки однофайловых проектов
Одновременная работа над программой нескольких программистов становится неэффективной.
Ориентирование в тексте программы становится сложным.
Даже при локальном изменении перекомпилируется весь проект.
Описание слайда:
Недостатки однофайловых проектов Одновременная работа над программой нескольких программистов становится неэффективной. Ориентирование в тексте программы становится сложным. Даже при локальном изменении перекомпилируется весь проект.

Слайд 3





Преимущества многофайловой организации проекта
Позволяет распределить работу над проектом между несколькими программистами.
Код программы более удобочитаем.
Сокращает время повторной компиляции.
Повторное использование кода.
Описание слайда:
Преимущества многофайловой организации проекта Позволяет распределить работу над проектом между несколькими программистами. Код программы более удобочитаем. Сокращает время повторной компиляции. Повторное использование кода.

Слайд 4





Компиляция многофайлового проекта
// hello.c
#include <stdio.h>

void hello(void)
{
    printf("Hello!\n");
}
Описание слайда:
Компиляция многофайлового проекта // hello.c #include <stdio.h> void hello(void) { printf("Hello!\n"); }

Слайд 5





Компиляция многофайлового проекта
// hello.c
#include <stdio.h>

void hello(void)
{
    printf("Hello!\n");
}
Описание слайда:
Компиляция многофайлового проекта // hello.c #include <stdio.h> void hello(void) { printf("Hello!\n"); }

Слайд 6





Компиляция многофайлового проекта
Описание слайда:
Компиляция многофайлового проекта

Слайд 7





Компиляция многофайлового проекта
// hello.c
#include <stdio.h>

void hello(void)
{
    printf("Hello!\n");
}
Описание слайда:
Компиляция многофайлового проекта // hello.c #include <stdio.h> void hello(void) { printf("Hello!\n"); }

Слайд 8





Компиляция многофайлового проекта
Описание слайда:
Компиляция многофайлового проекта

Слайд 9





Заголовочные файлы
// hello.c
#include <stdio.h>

void hello(void)
{
    printf("Hello!\n");
}


// hello.h
void hello(void);
Описание слайда:
Заголовочные файлы // hello.c #include <stdio.h> void hello(void) { printf("Hello!\n"); } // hello.h void hello(void);

Слайд 10





Заголовочные файлы
// list.h
struct list_node
{
    void *data;
    struct list_node *next;
};

// ...
Описание слайда:
Заголовочные файлы // 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;
};

// ...

#endif // __LIST_H__
Описание слайда:
Заголовочные файлы // list.h #ifndef __LIST_H__ #define __LIST_H__ struct list_node { void *data; struct list_node *next; }; // ... #endif // __LIST_H__

Слайд 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 -o greeting.exe hello.o buy.o main.o
c99 -o test_greeting.exe hello.o buy.o test.o
Описание слайда:
«Большой» проект Компиляция 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





Граф зависимостей
Описание слайда:
Граф зависимостей

Слайд 14





Утилита make
make — утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. 
GNU Make (рассматривается далее)
BSD Make
Microsoft Make (nmake)
Описание слайда:
Утилита make make — утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. GNU Make (рассматривается далее) BSD Make Microsoft Make (nmake)

Слайд 15





Утилита make: принципы работы
Необходимо создать так называемый сценарий сборки проекта (make-файл). Этот файл описывает
отношения между файлами программы;
содержит команды для обновления каждого файла.
Утилита make использует информацию из make-файла и время последнего изменения каждого файла для того, чтобы решить, какие файлы нужно обновить.
Утилита make предполагает, что по умолчанию сценарий сборки называется makefile или Makefile.
Описание слайда:
Утилита make: принципы работы Необходимо создать так называемый сценарий сборки проекта (make-файл). Этот файл описывает отношения между файлами программы; содержит команды для обновления каждого файла. Утилита make использует информацию из make-файла и время последнего изменения каждого файла для того, чтобы решить, какие файлы нужно обновить. Утилита make предполагает, что по умолчанию сценарий сборки называется makefile или Makefile.

Слайд 16





Сценарий сборки проекта
цель: зависимость_1 ... зависимость_n
[tab]команда_1
[tab]команда_2
...
[tab]команда_m
Описание слайда:
Сценарий сборки проекта цель: зависимость_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 : 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
Описание слайда:
Простой сценарий сборки 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





Использование переменных и комментариев
Строки, которые начинаются с символа #, являются комментариями.
Определить переменную в make-файле можно следующим образом:
VAR_NAME := value
Чтобы получить значение переменной, необходимо ее имя заключить в круглые скобки и перед ними поставить символ '$'.
$(VAR_NAME)
Описание слайда:
Использование переменных и комментариев Строки, которые начинаются с символа #, являются комментариями. Определить переменную в make-файле можно следующим образом: VAR_NAME := value Чтобы получить значение переменной, необходимо ее имя заключить в круглые скобки и перед ними поставить символ '$'. $(VAR_NAME)

Слайд 19





Использование переменных и комментариев
# Компилятор
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
Описание слайда:
Использование переменных и комментариев # Компилятор 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





Использование переменных и комментариев
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
Описание слайда:
Использование переменных и комментариев 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





Автоматические переменные
Автоматические переменные - это переменные со специальными именами, которые «автоматически» принимают определенные значения перед выполнением описанных в правиле команд.
Переменная "$^" означает "список зависимостей".
Переменная "$@" означает "имя цели".
Переменная "$<" является просто первой зависимостью.
Было
greeting.exe : $(OBJS) main.o
	gcc -o greeting.exe $(OBJS) main.o

Стало
greeting.exe : $(OBJS) main.o
	gcc $^ -o $@
Описание слайда:
Автоматические переменные Автоматические переменные - это переменные со специальными именами, которые «автоматически» принимают определенные значения перед выполнением описанных в правиле команд. Переменная "$^" означает "список зависимостей". Переменная "$@" означает "имя цели". Переменная "$<" является просто первой зависимостью. Было greeting.exe : $(OBJS) main.o gcc -o greeting.exe $(OBJS) main.o Стало greeting.exe : $(OBJS) main.o gcc $^ -o $@

Слайд 22





Автоматические переменные
# Компилятор
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 $@
Описание слайда:
Автоматические переменные # Компилятор 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





Автоматические переменные
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
Описание слайда:
Автоматические переменные 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





Шаблонные правила
%.расш_файлов_целей : %.расш_файлов_зав
[tab]команда_1
[tab]команда_2
...
[tab]команда_m
Описание слайда:
Шаблонные правила %.расш_файлов_целей : %.расш_файлов_зав [tab]команда_1 [tab]команда_2 ... [tab]команда_m

Слайд 25





Шаблонные правила
# Компилятор
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
Описание слайда:
Шаблонные правила # Компилятор 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





Сборка программы с разными параметрами компиляции
# Компилятор
CC := gcc

# Опции компиляции
CFLAGS := -std=c99 -Wall -Werror -pedantic

# Общие объектные файлы
OBJS := hello.o buy.o

ifeq ($(mode), debug)
    # Отладочная сборка: добавим генерацию отладочной информации
    CFLAGS += -g3
endif

ifeq ($(mode), release)
Описание слайда:
Сборка программы с разными параметрами компиляции # Компилятор CC := gcc # Опции компиляции CFLAGS := -std=c99 -Wall -Werror -pedantic # Общие объектные файлы OBJS := hello.o buy.o ifeq ($(mode), debug) # Отладочная сборка: добавим генерацию отладочной информации CFLAGS += -g3 endif ifeq ($(mode), release)

Слайд 27





Сборка программы с разными параметрами компиляции
    # Финальная сборка: исключим отладочную информацию и утверждения (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
Описание слайда:
Сборка программы с разными параметрами компиляции # Финальная сборка: исключим отладочную информацию и утверждения (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





Литература
Черновик стандарта C99
Б. Керниган, Д. Ритчи Язык программирования С
Артур Гриффитс, GCC: Настольная книга пользователей, программистов и системных администраторов.
Различные циклы уроков (tutorials) по make (например, http://habrahabr.ru/post/211751)
Описание слайда:
Литература Черновик стандарта C99 Б. Керниган, Д. Ритчи Язык программирования С Артур Гриффитс, GCC: Настольная книга пользователей, программистов и системных администраторов. Различные циклы уроков (tutorials) по make (например, http://habrahabr.ru/post/211751)



Похожие презентации
Mypresentation.ru
Загрузить презентацию