Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake).

preview_player
Показать описание
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.

У студентов в самом разгаре проекты и настало время познакомиться с системами сборки. Мы начнём с разминки в виде анализа зависимостей между файлами. Очень быстро пройдя первый наивный способ собирать скриптом, мы за час напишем три версии makefiles возрастающей сложности. Ну а в конце нас ждёт немного cmake.

Семинарист: Константин Владимиров.
Дата: 25 апреля 2024 года.
Съёмка: Марк Гончаров.
Звук: Юлий Тарасов.

00:00 Зависимости и хедера
11:48 Makefiles и декларативная модель
19:51 Ленивые и переменные
30:52 Автоматические переменные
36:15 Первая версия makefile
41:33 Функции и wildcards
47:40 Вторая версия makefile и зависимости от хедеров
56:36 Третья итерация: почти идеальный makefile
01:06:26 Знакомство с cmake
01:19:35 Бонус. Немного больше про cmake.
01:30:40 Окончательные уроки.

Errata
* Тут пока пусто
Рекомендации по теме
Комментарии
Автор

где-то до половины лекции я это уже знал, читая документацию по make и stackoverflow, на это у меня ушло очень много времени, а здесь все изложено за пол часа, и самое крутое, что лектор изложил развитие мысли, как от примитивного решения приходить к сложному, но эффективному. Однозначно лайк, особенно за задор, с которым это все подается!

andreykot
Автор

Эта лекция как хорошая книга: можно пересматривать несколько раз, и каждый раз выносить для себя что-то новое:)

Alamat
Автор

Невероятное удовольствие получаешь от прослушивания грамотного человека. Жаль в свое время не встретил таких

dbqzyyf
Автор

Спасибо, все видео истерически смеялся без остановки.

Кстати насчет cmake_minimum_required:
Стоит упомянуть, что в некоторых случаях он фиксирует и верхнюю планку доступных фич до указанной версии.

Есть такая штука, как MSVC_RUNTIME_LIBRARY, специфицирует как линковать стдлибу. Так вот, появилось это в симейке 3.16, а у меня стояло 3.10. Путем 2 часового гадания на гуще проблема конечно решилась, но осадочек остался

kinstat
Автор

Отличный семинар, спасибо! Есть над чем поразмыслить.

DmitryKandiner
Автор

Какое приятное субботнее утро) Спасибо за лекцию! Узнал много нового про make, оказывается, он тоже красивый. Про cmake рекомендую книжку Rafał Świdziński Modern CMake for C++ 2022. Очень легко читается, много примеров, про target oriented подход одна хорошая глава. Но самое главное, там показано, как ваш проект растет и развивается, и как cmake решает эти подростковые проблемы.

konstantinlimarev
Автор

еще не смотрел, но заранее большое-прибольшое спасибо!

alexmid
Автор

Некоторое время учу русский язык. Я рад, что смог понять это видео.

suic
Автор

Константин, большое Вам спасибо за курс лекций, от человека из региона!
как то было сказано что доп. семинара по vim не будет. Но если это станет возможным, то курс станет шикарным в квадрате. В меру часто приходится подключаться к удаленным серверам и что то править и хорошие практики работы с vim были бы очень полезны. Сам очень долго (несколько месяцев) разбирался как работает буфер и как его прокинуть на удаленный сервер в vim. (Прокинуть ssh -X, ssh config X11Forwarding yes, установить xclip, vim config set clipboard += "unnamedplus"). А ведь копи-паст это полезная функция. Без иксов можно системно и логично (как Вы это делаете, отдельная благодарность) рассказать о базовых настройках чистого vim. нумерация строк, сплит экрана - то чем пользовались на семинарах.

atmr
Автор

1:03:05 починка make с помощью git - понимаю. В старом Qt после конфигурации "make clean" бежал собирать тулзу для кодгена, в этом случае самым надежным clean был удар кувалдой "git clean -xdf"

thepawday
Автор

Полжизни пишу на Си и некоторые вещи не знал. 😄

cat
Автор

Смеялся в голос от замечания, что 2 из 3 человек не читают документацию, а изучают методом тыка :D Помню, как сам начинал знакомство с мейкфайлами: "Таак, мне нравится другой редактор и другое всё, но среда разработки пишет компилятору, как это всё собирать... Хммм, чё, не разберусь что ли по аналогии так же сделать, но по-своему?!"

Terrensino
Автор

Всем здравствуйте. Этот стрим потом можно будет посмотреть в записи?

gqnkwfj
Автор

Как думаете стоит ли учить программирование сейчас и поступать на IT и смежные направления, не заменит ли ИИ представителей данной профессии? Спрашиваю, как будущий абитуриент...

mndtr
Автор

А где тот комментарий, который нужно лайкать за ранее? ) ❤

sibedir
Автор

Потестил iwyu и что-то не компилится по его советам ...

dqnsynw
Автор

если что не так, прошу прощения, будет ли курс для самых "маленьких" по с/с++(20)
для riscv64 linux(на ?docker)
С уважением. Андрей.

andreybogachev
Автор

Константин, большое спасибо за традиционно качественный семинар!

johndick