CMake основы

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 มี.ค. 2021
  • #soer #itubeteam
    Основной канал для общения и публикации новых видео - Телегарм - t.me/softwareengineervlog
    Спонсорство - donate.s0er.ru
    Сайт платным контентом - soer.pro
    Зеркало для видео Дзен Видео - zen.yandex.ru/id/5f578bdf22e2...
    GitHub - github.com/soerdev
    Чат для программистов - / discord
    Группа ВК - codeartblog

ความคิดเห็น • 110

  • @user-is9fv5bi7x
    @user-is9fv5bi7x 3 ปีที่แล้ว +66

    С самого начало про этапы и способы сборки проектов хотелось бы увидеть. Мне эти make, config и д.р. тяжелее даются чем С++.

    • @anatoliyv5607
      @anatoliyv5607 ปีที่แล้ว +9

      Та же фигня, ничего не могу понять

    • @mexal21
      @mexal21 6 หลายเดือนก่อน

      ​@@anatoliyv5607новичкам, которые читают это советую начинать с make, а не cmake, он попроще

  • @cruigo
    @cruigo 3 ปีที่แล้ว +5

    Спасибо! Оооочень жду продолжения!

  • @mbgoodman
    @mbgoodman 3 ปีที่แล้ว

    Недавно начал разбираться с CMake и тут как раз это видео. Спасибо!

  • @8Johnny8Catsvill8
    @8Johnny8Catsvill8 3 ปีที่แล้ว +62

    Ооо, ну наконец-то хоть кто-то. Хотя я уже им научился пользоваться, но уроков по CMake ооочень мало. Надеюсь, не забросишь. F

    • @konstantinkouptsov7513
      @konstantinkouptsov7513 3 ปีที่แล้ว +1

      Есть книжка по CMake. Её и документации в сети вполне достаточно.

    • @8Johnny8Catsvill8
      @8Johnny8Catsvill8 3 ปีที่แล้ว +5

      @@konstantinkouptsov7513 да, даже две книжки. Но почему-то нашёл я их не сразу. А документацию читать было сложно. Т.е. не хватало банального понимания, что за чем нажимать, как это работает и для чего оно нужно.

    • @user-bl4mm5pr9g
      @user-bl4mm5pr9g 3 ปีที่แล้ว +3

      @@konstantinkouptsov7513 Субъективно без хорошего понимания CMake читать доку по ней сложно... А вот материалов в сети действительно хватает (книги, статьи, видосики с cppcon). Потом уже можно и в документацию лезть)

    • @konstantinkouptsov7513
      @konstantinkouptsov7513 3 ปีที่แล้ว +1

      @@user-bl4mm5pr9g Я это и имел ввиду. Но принцип работы CMake весьма прост, поэтому когда его поймёшь после чтения одной (довольно толстой) книжки, то документации вполне достаточно.

    • @ArtDAg05
      @ArtDAg05 3 ปีที่แล้ว +1

      @@8Johnny8Catsvill8 решил остальным не делать жизнь проще и не указал название книг?)

  • @WGDev
    @WGDev 3 ปีที่แล้ว +35

    Было бы неплохо разобрать утилиту make и подходы к работе с Makefile

    • @user-st5ht9fb3i
      @user-st5ht9fb3i 3 ปีที่แล้ว +1

      CMake может сгенерировать файлы для утилиты Make.

  • @undefined6436
    @undefined6436 3 ปีที่แล้ว +1

    Красавчик, не дождусь как посмотрю это видео. Лайк за активность, тема Сmake очень интересна для меня в работе.

  • @slyene6202
    @slyene6202 3 ปีที่แล้ว +2

    Cma... ВОт это как раз то, что мне надо! Только вчера пытался прогу собрать

  • @ivanryanichev1580
    @ivanryanichev1580 3 ปีที่แล้ว +1

    Супер, хотелось бы еще видео про современное использование cmake , с разбиением на директории и линковкой таргетов

  • @greentree5707
    @greentree5707 3 ปีที่แล้ว +5

    Автору большое спасибо за труд! Хотелось бы то же самое про утилиту Make, команды make build, make test, make install.

    • @MN-mi6eo
      @MN-mi6eo 3 ปีที่แล้ว

      если вы сами посмотрите на синтаксис файла Makefile, то все сразу поймете, там ничего загадочного нет

    • @user-is9fv5bi7x
      @user-is9fv5bi7x 3 ปีที่แล้ว

      Поддерживаю

  • @sixaxisization
    @sixaxisization 3 ปีที่แล้ว +3

    Это Вы? Это правда Вы? И раньше были Вы? Ой.... спасибо вам огромное...!!! :)

  • @user-fb4iy7tb4f
    @user-fb4iy7tb4f 3 ปีที่แล้ว

    Реально полезное видео! Спасибо!

  • @rampage6205
    @rampage6205 ปีที่แล้ว

    Круто, спасибо!

  • @user-pg8ry1tm3t
    @user-pg8ry1tm3t 3 ปีที่แล้ว

    Спасибо!!

  • @simplemovies4126
    @simplemovies4126 3 ปีที่แล้ว

    Отличный ролик!

  • @wokroutArsentiy
    @wokroutArsentiy 2 ปีที่แล้ว

    Сейчас для меня как никогда актуально. Перешел на макось и понял, что тут по началу все не как в винде. Привыкну быстро, но хотелось бы ещё и с комфортом привыкать. Благодарю за видео!

  • @sw3nlab
    @sw3nlab 3 ปีที่แล้ว

    Супер контент ! Да здравствует Open Source !

  • @vladimirtatarchevskiy5886
    @vladimirtatarchevskiy5886 3 ปีที่แล้ว

    Скажите пожалуйста, каким планшетом и каким ПО вы пользуетесь для рисования на экране?

  • @user-xv1lu5mr8p
    @user-xv1lu5mr8p 2 ปีที่แล้ว

    Можно больше про CMake пожалуйста!

  • @razumov_uv
    @razumov_uv 3 ปีที่แล้ว

    👍 Класс!

  • @PushkaryovVsevolod
    @PushkaryovVsevolod 5 หลายเดือนก่อน

    А чувак то толковый. Знает о чём говорит.

  • @user-hd8yl6ju8o
    @user-hd8yl6ju8o 3 ปีที่แล้ว

    Книга по CMake Д.В. Дуброва годная? Стоит покупать? Просто других на русском не нашёл.

  • @ClosiusBeg
    @ClosiusBeg 2 ปีที่แล้ว

    Спасибо большое!! Объясните пожалуйста разницу между PRIVATE, PUBLIC, INTERFACE для target_* ?

  • @Hayshniki
    @Hayshniki 3 ปีที่แล้ว +2

    Здраствуйте. А можете рассказать как вы справляетесь с синдромом сухого глаза?

  • @Wins419
    @Wins419 8 หลายเดือนก่อน

    Поставил бы еще один лайк, но в ютубе нет такого функционала. Второй раз видео помогло).

  • @0x4f6c
    @0x4f6c 3 ปีที่แล้ว +6

    Принципы работы это интересно, но полезнее информация о средствах автоматизации создания cmake проектов. Ещё полезнее работать в IDE, которая поддерживает такие проекты. Всё-таки гораздо интереснее писать код, чем вручную выписывать миллион однообразных скриптов системы сборки.
    Если посвятишь этому немного времени - будет супер.

    • @mexal21
      @mexal21 6 หลายเดือนก่อน

      Полезнее как раз таки собирать все самому чем тыкать на магическую кнопочку в ide и ее понимать как это работает под капотом

    • @0x4f6c
      @0x4f6c 6 หลายเดือนก่อน +1

      @@mexal21 это, конечно, передёргивание - так ставить вопрос. Лучше всего вышеперечисленного: понимать, что происходит под капотом, и предоставить это делать IDE или соответствующим инструментам.

  • @user-pn8fo3zq8o
    @user-pn8fo3zq8o 3 ปีที่แล้ว

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

    • @i.reutenko
      @i.reutenko 3 ปีที่แล้ว

      Какой то из дефолтных плагинов oh-my-zsh

    • @i.reutenko
      @i.reutenko 3 ปีที่แล้ว

      Только это не автокомплит а переход по истории введённых команд

    • @user-pn8fo3zq8o
      @user-pn8fo3zq8o 3 ปีที่แล้ว

      @@i.reutenko , понял, спасибо.

  • @pegamer3051
    @pegamer3051 3 ปีที่แล้ว

    Не могли бы вы подсказать, как реализовать копирование среды выполнения при сборке проекта?

  • @greentree5707
    @greentree5707 3 ปีที่แล้ว

    Посоветуйте литературу, где можно поподробнее почитать про cmake.

  • @s4ridzawa
    @s4ridzawa 3 ปีที่แล้ว

    Круто! А как Вы реализовали генерацию кода на экране во время записи? По звуку вроде не слышно как по клавиатуре печатаете, а символы бегут...))

    • @s4ridzawa
      @s4ridzawa 3 ปีที่แล้ว

      кажется понял, это printer.sh видимо))

    • @artemkonoplin2143
      @artemkonoplin2143 3 ปีที่แล้ว

      @@s4ridzawa да

  • @vladspace6918
    @vladspace6918 3 ปีที่แล้ว +1

    Спасибо за видео, очень вовремя :)
    Такой вопрос, за что отвечает команда «make»?

    • @CAMOBAP795
      @CAMOBAP795 3 ปีที่แล้ว +4

      Она выполняет сборку на основании Makefile'ов, который могут быть сгенерированны с помощью cmake. По умолчанию make ищет Makefile в текущей директории

    • @greentree5707
      @greentree5707 3 ปีที่แล้ว

      @@CAMOBAP795 как тогда определиться что использовать - make или cmake?

    • @CAMOBAP795
      @CAMOBAP795 3 ปีที่แล้ว +3

      @@greentree5707 Зависит от задачи, для c++ я бы использовать make на прямую не стал, ну или только если очень простой проект.
      В случае если вам нужно поддерживать много платформ/компиляторов/вариантов сборки + авто тесты + собрать инсталятор - cmake де факто стандарт уже

  • @redologs
    @redologs 3 ปีที่แล้ว +8

    Ну мне как-то не очень. Для тех кто хочет перейти на cmake информации крайне мало. А для первого ознакомления полезнее будет прочитать статью из википедии.

  • @StahLHerZRocK
    @StahLHerZRocK ปีที่แล้ว

    Чет непонял, откуда cmake знает где, а главное какой компилятор, линковщик использовать?

  • @Blowjin
    @Blowjin 3 ปีที่แล้ว +2

    Можно сделать видео про используемый здесь fiSh. В русской части Ютьюба я ничего похожего не нашёл.

  • @MN-mi6eo
    @MN-mi6eo 3 ปีที่แล้ว

    а можно еще урок по нему?

  • @reksarka
    @reksarka 3 ปีที่แล้ว +2

    А если проект на Autotools, есть ли какие-то причины не переходить на CMake? За исключением того, что не будет configure и потребуется установленный cmake для сборки.

    • @CAMOBAP795
      @CAMOBAP795 3 ปีที่แล้ว

      Есть хорошие проекты которые продолжают использовать autotools (например ffmpeg) так что наверно больше дело вкуса

    • @reksarka
      @reksarka 3 ปีที่แล้ว

      @@CAMOBAP795 Очень много опенсорса юзает autotools, даже сам CMake) Мне интересно, если не гоняться за поддержкой совсем уж легаси, можно ли спокойно тащить cmake через менеджер пакетов в любой системе и конфигурировать проект им? Его доступность в системах близка к доступности make?

    • @CAMOBAP795
      @CAMOBAP795 3 ปีที่แล้ว +1

      @@reksarka
      > можно ли спокойно тащить cmake через менеджер пакетов в любой системе и конфигурировать проект им?
      Да, вполне, но есть нюанс - если нужны более "свежие" версии их может не быть в дефолтных репах
      Я с недавних пор пользуюсь snap'ом, там всегда можно найти актульную версию snapcraft.io/cmake . Но не уверен что snap завезли на все дистрибутивы уже
      > Его доступность в системах близка к доступности make?
      Я бы сказал что близка

  • @bagzhansadvakassov1093
    @bagzhansadvakassov1093 3 ปีที่แล้ว

    Cherry blue

  • @user-oj7lo6mv7h
    @user-oj7lo6mv7h 3 ปีที่แล้ว +3

    3:31 неневижу механику, а именно синие переключатели. какие же они громкие, я вообще за ними голос не слышу :(

  • @Wins419
    @Wins419 ปีที่แล้ว

    Как с помощью cmake создать файл проекта, например для CodeBlocks (или для другой IDE) из репозитария git? (Вопрос может быть не совсем корректен, тк разбираюсь с темой работа с OpenSource проектами). Заранее спасибо.

    • @user-wn7cs5bs1h
      @user-wn7cs5bs1h ปีที่แล้ว +1

      Посмотрите на опции генератора у cmake
      Например cmake -G "codeblocks - unix makefiles" ..

    • @Wins419
      @Wins419 ปีที่แล้ว

      @@user-wn7cs5bs1h, спасибо попробую.

  • @DaniilK-hq5go
    @DaniilK-hq5go 3 ปีที่แล้ว +1

    Надо было хоть упомянуть соотношение с make, ninja и другими

  • @artem.zacharchenko9806
    @artem.zacharchenko9806 ปีที่แล้ว

    а что в заголовке .h ? файл не показан. выдает ошибку при сборке.

  • @PushkaryovVsevolod
    @PushkaryovVsevolod 5 หลายเดือนก่อน +1

    Вот так калечит людей c++.....

  • @AndRoid-xj2jj
    @AndRoid-xj2jj 3 ปีที่แล้ว

    @S0ER, меня интересует такой вопрос - А нельзя ли написать один компилятор для всех языков и под все системы? Например на VStudio можно писать на С++ под Android, но нельзя писать на чистом С под Android, в чем дело?

    • @konstantinkouptsov7513
      @konstantinkouptsov7513 3 ปีที่แล้ว +1

      В принципе, можно. Также можно объединить телевизор, пылесос, аквариум, холодильник и велосипед в единое устройство. Только зачем вам такая химера?

    • @dann1kid
      @dann1kid 3 ปีที่แล้ว

      вопрос, как чистый си будет работать на джава?

    • @expurple
      @expurple 3 ปีที่แล้ว +1

      Какой-то очень странный и нубский вопрос. Зачем один компилятор для всех языков? Вы программу пишете на одном конкретном языке, в любом случае. Зачем вам для её сборки качать какой-то гигантский компилятор, который понимает всё на свете? Достаточно того, который предназначен для вашего языка.
      Про то, что нельзя писать на чистом С, тоже очень странное утверждение. Компилятор С++ спокойно компилирует код, написанный на С.

  • @ni55an
    @ni55an 3 ปีที่แล้ว +2

    Уу... помню как ипался с ним лет так 5 назад, собирая проект на C++/OpenGL под Desktop, Android и Web (через emscripten).
    !!! Опасно для здоровья !!! Не повторять в домашних условиях !!!

  • @victorchilari
    @victorchilari 3 ปีที่แล้ว +1

    Просмотрел всё видео но так и не понял зачем это мне :/ Что планируете?

    • @razumov_uv
      @razumov_uv 3 ปีที่แล้ว

      Как появится потребность делать кросплатформенные вещи, тогда и поймёте, зачем это вам.

  • @olsuhvlad
    @olsuhvlad ปีที่แล้ว

    13 Никто не восходил на небо, как только сшедший с небес Сын Человеческий, сущий на небесах.
    14 И как Моисей вознес змию в пустыне, так должно вознесену быть Сыну Человеческому,
    15 дабы всякий, верующий в Него, не погиб, но имел жизнь вечную.
    16 Ибо так возлюбил Бог мир, что отдал Сына Своего Единородного, дабы всякий верующий в Него, не погиб, но имел жизнь вечную.
    17 Ибо не послал Бог Сына Своего в мир, чтобы судить мир, но чтобы мир спасен был чрез Него.
    18 Верующий в Него не судится, а неверующий уже осужден, потому что не уверовал во имя Единородного Сына Божия.
    19 Суд же состоит в том, что свет пришел в мир; но люди более возлюбили тьму, нежели свет, потому что дела их были злы;
    20 ибо всякий, делающий злое, ненавидит свет и не идет к свету, чтобы не обличились дела его, потому что они злы,
    21 а поступающий по правде идет к свету, дабы явны были дела его, потому что они в Боге соделаны.
    (Иоан.3:13-21)

  • @blusterhash
    @blusterhash 3 ปีที่แล้ว +1

    Jason Turner (у него есть канал про c++ на ютубе) почему-то пишет, что "target_compile_options" - это плохой CMake. Так и не понял, что в нем плохого и на что его нужно заменить ( twitter.com/lefticus/status/1359215651433238531?s=20 )

    • @CAMOBAP795
      @CAMOBAP795 3 ปีที่แล้ว +1

      У @Jason Turner реально классный канал, тоже его сморю.
      > почему-то пишет, что "target_compile_options" - это плохой CMake
      Мне кажется Вы не верно перевели: он пишет что если у Вас больше работы с переменными чем использования "стандартных" команд по установке флагов компиляции, то это можно улучшить
      Пример:
      # ПЛОХО
      set(CMAKE_CXX_FLAGS "-Werror -Wall -Wextra -Wpedantic")
      # ХОРОШО
      target_compile_options(my_target PRIVATE "-Werror -Wall -Wextra -Wpedantic")
      т.е. не нужно по возможности избегать "глобально" декларирования агрументов компилятора, нечто похожее на подход с глобальными переменными

    • @fumanchez
      @fumanchez 3 ปีที่แล้ว

      конечно плохой, потому что ты меняешь свой гцц на что угодно и у тебя ничего не работает

    • @CAMOBAP795
      @CAMOBAP795 3 ปีที่แล้ว

      @@fumanchez А какой магический способ поможет сделать чтобы "все работало" кроме явной поддержки разных компиляторов в CMakeLists.txt? И при чем тут target_compile_options к этой проблеме вообще?

    • @fumanchez
      @fumanchez 3 ปีที่แล้ว +1

      @@CAMOBAP795 никакой, вся ответственность на разработчике - если он использует специфический флажок компилятора, которого больше нигде нет, то кроссплатформенности никакой не будет

    • @CAMOBAP795
      @CAMOBAP795 3 ปีที่แล้ว +2

      ​@@fumanchez так и есть, но я бы не стал записывать это в недостаток cmake. Использования специфичных флагов компиляции, это как использование платформозависимого API в C++. Нужно просто писать CMakeLists.txt четко понимая какие компиляторы планируете поддерживать, а например check_{c|cxx}_compiler_flag поможет проверять поддерживается тот или иной флаг и не доводить до этапа сборки в худшем случае и показывать адекватную ошибку пользователю

  • @vladimirgorkov5904
    @vladimirgorkov5904 3 ปีที่แล้ว

    Ну нет если уж взялся учить, то объясняй всё. Каждую строчку. Каждый вызов функции. Все ключи, параметры. Что такое статическая. А какие ещё бывают.

  • @user-gl9yo8rz8k
    @user-gl9yo8rz8k 3 ปีที่แล้ว +2

    В Симейке все прекрасно, кроме одного - уродского синтаксиса двадцатилетней давности.

    • @CAMOBAP795
      @CAMOBAP795 3 ปีที่แล้ว +3

      Мне кажется через некоторое время развивается "стокгольмский синдром", я теперь в нем что-то очаровательное нахожу уже)

    • @DaniilK-hq5go
      @DaniilK-hq5go 3 ปีที่แล้ว +1

      @@CAMOBAP795 то же самое, сначала хейтил, потом стало нравится

  • @user-gw8bx4pm2o
    @user-gw8bx4pm2o ปีที่แล้ว

    Сольер

  • @magzim9337
    @magzim9337 2 ปีที่แล้ว +1

    А зачем этот cmake

  • @user-rv3cw6mp6i
    @user-rv3cw6mp6i 3 หลายเดือนก่อน

    Смаке

  • @Vicont4063
    @Vicont4063 3 ปีที่แล้ว

    th-cam.com/video/szdbKz5CyhA/w-d-xo.html Как тебе такое Mr. Soer? ))))

  • @dann1kid
    @dann1kid 3 ปีที่แล้ว +1

    У тебя шкаф горит а ты про симейк рассказываешь.
    Капец синьоры пошли забывчивые, таблетки хоть выпей, не позорься
    Это рофл давайте без обид ок?

  • @fumanchez
    @fumanchez 3 ปีที่แล้ว +2

    смысл показывать проект без какой-либо структуры папок и без вложенных CMakeLists.txt - никто так не делает в реальной жизни
    да и тупо писать флаги компилятора без проверок, что это за компилятор, это тоже колхоз

    • @konstantinkouptsov7513
      @konstantinkouptsov7513 3 ปีที่แล้ว

      Это пятиминутное видео, а вы хотите со всеми подробностями.

    • @fumanchez
      @fumanchez 3 ปีที่แล้ว +1

      @@konstantinkouptsov7513 это не подробность, это основа

    • @konstantinkouptsov7513
      @konstantinkouptsov7513 3 ปีที่แล้ว

      @@fumanchez Это явно не основа, а просто иллюстрация как использовать CMake, которая даже не объясняет принципа его работы.

    • @S0ERDEVS
      @S0ERDEVS  3 ปีที่แล้ว

      @Konstantin Kouptsov думаете можете написать что-то на cmake не используя ни одной команды из видео? Заинтриговали!

    • @S0ERDEVS
      @S0ERDEVS  3 ปีที่แล้ว

      @Fu Manchu смысл делать неконструктивные комментарии? У вас есть опыт в создании обучающего контента? Здорово! Дайте структуру того что и в какой последовательности надо рассказать, чтобы было по красоте. Желательно с таймингом.

  • @cyrilanisimov
    @cyrilanisimov 8 หลายเดือนก่อน

    Это самое сложное объяснение которые я видел. Уж проще на сайте СМэйка туториал почитать, чем такое смотреть. Второй пример очень сложный для новичка и получается, что всё, что после первого примера, который кстати есть в любом хелпе, бесполезно. Имхо, на симэйк надо потратить какое-то время, чтобы начать понимать, зачем сделаны многие вещи, уж больно непривычный синтаксис у него.