@@konstantinkouptsov7513 да, даже две книжки. Но почему-то нашёл я их не сразу. А документацию читать было сложно. Т.е. не хватало банального понимания, что за чем нажимать, как это работает и для чего оно нужно.
@@konstantinkouptsov7513 Субъективно без хорошего понимания CMake читать доку по ней сложно... А вот материалов в сети действительно хватает (книги, статьи, видосики с cppcon). Потом уже можно и в документацию лезть)
@@СергейНикитин-т9ж Я это и имел ввиду. Но принцип работы CMake весьма прост, поэтому когда его поймёшь после чтения одной (довольно толстой) книжки, то документации вполне достаточно.
Принципы работы это интересно, но полезнее информация о средствах автоматизации создания cmake проектов. Ещё полезнее работать в IDE, которая поддерживает такие проекты. Всё-таки гораздо интереснее писать код, чем вручную выписывать миллион однообразных скриптов системы сборки. Если посвятишь этому немного времени - будет супер.
@@mexal21 это, конечно, передёргивание - так ставить вопрос. Лучше всего вышеперечисленного: понимать, что происходит под капотом, и предоставить это делать IDE или соответствующим инструментам.
Сейчас для меня как никогда актуально. Перешел на макось и понял, что тут по началу все не как в винде. Привыкну быстро, но хотелось бы ещё и с комфортом привыкать. Благодарю за видео!
Ну мне как-то не очень. Для тех кто хочет перейти на cmake информации крайне мало. А для первого ознакомления полезнее будет прочитать статью из википедии.
А если проект на Autotools, есть ли какие-то причины не переходить на CMake? За исключением того, что не будет configure и потребуется установленный cmake для сборки.
@@CAMOBAP795 Очень много опенсорса юзает autotools, даже сам CMake) Мне интересно, если не гоняться за поддержкой совсем уж легаси, можно ли спокойно тащить cmake через менеджер пакетов в любой системе и конфигурировать проект им? Его доступность в системах близка к доступности make?
@@reksarka > можно ли спокойно тащить cmake через менеджер пакетов в любой системе и конфигурировать проект им? Да, вполне, но есть нюанс - если нужны более "свежие" версии их может не быть в дефолтных репах Я с недавних пор пользуюсь snap'ом, там всегда можно найти актульную версию snapcraft.io/cmake . Но не уверен что snap завезли на все дистрибутивы уже > Его доступность в системах близка к доступности make? Я бы сказал что близка
@@greentree5707 Зависит от задачи, для c++ я бы использовать make на прямую не стал, ну или только если очень простой проект. В случае если вам нужно поддерживать много платформ/компиляторов/вариантов сборки + авто тесты + собрать инсталятор - cmake де факто стандарт уже
Уу... помню как ипался с ним лет так 5 назад, собирая проект на C++/OpenGL под Desktop, Android и Web (через emscripten). !!! Опасно для здоровья !!! Не повторять в домашних условиях !!!
Как с помощью cmake создать файл проекта, например для CodeBlocks (или для другой IDE) из репозитария git? (Вопрос может быть не совсем корректен, тк разбираюсь с темой работа с OpenSource проектами). Заранее спасибо.
Jason Turner (у него есть канал про c++ на ютубе) почему-то пишет, что "target_compile_options" - это плохой CMake. Так и не понял, что в нем плохого и на что его нужно заменить ( twitter.com/lefticus/status/1359215651433238531?s=20 )
У @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 А какой магический способ поможет сделать чтобы "все работало" кроме явной поддержки разных компиляторов в CMakeLists.txt? И при чем тут target_compile_options к этой проблеме вообще?
@@CAMOBAP795 никакой, вся ответственность на разработчике - если он использует специфический флажок компилятора, которого больше нигде нет, то кроссплатформенности никакой не будет
@@fumanchez так и есть, но я бы не стал записывать это в недостаток cmake. Использования специфичных флагов компиляции, это как использование платформозависимого API в C++. Нужно просто писать CMakeLists.txt четко понимая какие компиляторы планируете поддерживать, а например check_{c|cxx}_compiler_flag поможет проверять поддерживается тот или иной флаг и не доводить до этапа сборки в худшем случае и показывать адекватную ошибку пользователю
@S0ER, меня интересует такой вопрос - А нельзя ли написать один компилятор для всех языков и под все системы? Например на VStudio можно писать на С++ под Android, но нельзя писать на чистом С под Android, в чем дело?
Какой-то очень странный и нубский вопрос. Зачем один компилятор для всех языков? Вы программу пишете на одном конкретном языке, в любом случае. Зачем вам для её сборки качать какой-то гигантский компилятор, который понимает всё на свете? Достаточно того, который предназначен для вашего языка. Про то, что нельзя писать на чистом С, тоже очень странное утверждение. Компилятор С++ спокойно компилирует код, написанный на С.
Это самое сложное объяснение которые я видел. Уж проще на сайте СМэйка туториал почитать, чем такое смотреть. Второй пример очень сложный для новичка и получается, что всё, что после первого примера, который кстати есть в любом хелпе, бесполезно. Имхо, на симэйк надо потратить какое-то время, чтобы начать понимать, зачем сделаны многие вещи, уж больно непривычный синтаксис у него.
смысл показывать проект без какой-либо структуры папок и без вложенных CMakeLists.txt - никто так не делает в реальной жизни да и тупо писать флаги компилятора без проверок, что это за компилятор, это тоже колхоз
@Fu Manchu смысл делать неконструктивные комментарии? У вас есть опыт в создании обучающего контента? Здорово! Дайте структуру того что и в какой последовательности надо рассказать, чтобы было по красоте. Желательно с таймингом.
С самого начало про этапы и способы сборки проектов хотелось бы увидеть. Мне эти make, config и д.р. тяжелее даются чем С++.
Та же фигня, ничего не могу понять
@@anatoliyv5607новичкам, которые читают это советую начинать с make, а не cmake, он попроще
Потому что они громадные. Это как изучать новый язык
Ооо, ну наконец-то хоть кто-то. Хотя я уже им научился пользоваться, но уроков по CMake ооочень мало. Надеюсь, не забросишь. F
Есть книжка по CMake. Её и документации в сети вполне достаточно.
@@konstantinkouptsov7513 да, даже две книжки. Но почему-то нашёл я их не сразу. А документацию читать было сложно. Т.е. не хватало банального понимания, что за чем нажимать, как это работает и для чего оно нужно.
@@konstantinkouptsov7513 Субъективно без хорошего понимания CMake читать доку по ней сложно... А вот материалов в сети действительно хватает (книги, статьи, видосики с cppcon). Потом уже можно и в документацию лезть)
@@СергейНикитин-т9ж Я это и имел ввиду. Но принцип работы CMake весьма прост, поэтому когда его поймёшь после чтения одной (довольно толстой) книжки, то документации вполне достаточно.
@@8Johnny8Catsvill8 решил остальным не делать жизнь проще и не указал название книг?)
Было бы неплохо разобрать утилиту make и подходы к работе с Makefile
CMake может сгенерировать файлы для утилиты Make.
Спасибо! Оооочень жду продолжения!
Это Вы? Это правда Вы? И раньше были Вы? Ой.... спасибо вам огромное...!!! :)
Автору большое спасибо за труд! Хотелось бы то же самое про утилиту Make, команды make build, make test, make install.
если вы сами посмотрите на синтаксис файла Makefile, то все сразу поймете, там ничего загадочного нет
Поддерживаю
Красавчик, не дождусь как посмотрю это видео. Лайк за активность, тема Сmake очень интересна для меня в работе.
Cma... ВОт это как раз то, что мне надо! Только вчера пытался прогу собрать
Недавно начал разбираться с CMake и тут как раз это видео. Спасибо!
Супер, хотелось бы еще видео про современное использование cmake , с разбиением на директории и линковкой таргетов
Принципы работы это интересно, но полезнее информация о средствах автоматизации создания cmake проектов. Ещё полезнее работать в IDE, которая поддерживает такие проекты. Всё-таки гораздо интереснее писать код, чем вручную выписывать миллион однообразных скриптов системы сборки.
Если посвятишь этому немного времени - будет супер.
Полезнее как раз таки собирать все самому чем тыкать на магическую кнопочку в ide и ее понимать как это работает под капотом
@@mexal21 это, конечно, передёргивание - так ставить вопрос. Лучше всего вышеперечисленного: понимать, что происходит под капотом, и предоставить это делать IDE или соответствующим инструментам.
Поставил бы еще один лайк, но в ютубе нет такого функционала. Второй раз видео помогло).
А чувак то толковый. Знает о чём говорит.
Можно больше про CMake пожалуйста!
Круто, спасибо!
Вот так калечит людей c++.....
Сейчас для меня как никогда актуально. Перешел на макось и понял, что тут по началу все не как в винде. Привыкну быстро, но хотелось бы ещё и с комфортом привыкать. Благодарю за видео!
Реально полезное видео! Спасибо!
Ну мне как-то не очень. Для тех кто хочет перейти на cmake информации крайне мало. А для первого ознакомления полезнее будет прочитать статью из википедии.
Здраствуйте. А можете рассказать как вы справляетесь с синдромом сухого глаза?
Спасибо!!
Супер контент ! Да здравствует Open Source !
Отличный ролик!
👍 Класс!
Надо было хоть упомянуть соотношение с make, ninja и другими
3:31 неневижу механику, а именно синие переключатели. какие же они громкие, я вообще за ними голос не слышу :(
Чет непонял, откуда cmake знает где, а главное какой компилятор, линковщик использовать?
А если проект на Autotools, есть ли какие-то причины не переходить на CMake? За исключением того, что не будет configure и потребуется установленный cmake для сборки.
Есть хорошие проекты которые продолжают использовать autotools (например ffmpeg) так что наверно больше дело вкуса
@@CAMOBAP795 Очень много опенсорса юзает autotools, даже сам CMake) Мне интересно, если не гоняться за поддержкой совсем уж легаси, можно ли спокойно тащить cmake через менеджер пакетов в любой системе и конфигурировать проект им? Его доступность в системах близка к доступности make?
@@reksarka
> можно ли спокойно тащить cmake через менеджер пакетов в любой системе и конфигурировать проект им?
Да, вполне, но есть нюанс - если нужны более "свежие" версии их может не быть в дефолтных репах
Я с недавних пор пользуюсь snap'ом, там всегда можно найти актульную версию snapcraft.io/cmake . Но не уверен что snap завезли на все дистрибутивы уже
> Его доступность в системах близка к доступности make?
Я бы сказал что близка
Спасибо большое!! Объясните пожалуйста разницу между PRIVATE, PUBLIC, INTERFACE для target_* ?
Можно сделать видео про используемый здесь fiSh. В русской части Ютьюба я ничего похожего не нашёл.
Книга по CMake Д.В. Дуброва годная? Стоит покупать? Просто других на русском не нашёл.
Спасибо за видео, очень вовремя :)
Такой вопрос, за что отвечает команда «make»?
Она выполняет сборку на основании Makefile'ов, который могут быть сгенерированны с помощью cmake. По умолчанию make ищет Makefile в текущей директории
@@CAMOBAP795 как тогда определиться что использовать - make или cmake?
@@greentree5707 Зависит от задачи, для c++ я бы использовать make на прямую не стал, ну или только если очень простой проект.
В случае если вам нужно поддерживать много платформ/компиляторов/вариантов сборки + авто тесты + собрать инсталятор - cmake де факто стандарт уже
Уу... помню как ипался с ним лет так 5 назад, собирая проект на C++/OpenGL под Desktop, Android и Web (через emscripten).
!!! Опасно для здоровья !!! Не повторять в домашних условиях !!!
Не могли бы вы подсказать, как реализовать копирование среды выполнения при сборке проекта?
Скажите пожалуйста, каким планшетом и каким ПО вы пользуетесь для рисования на экране?
Спасибо за видео. Подскажите, что за красивый автокомплит для командной строки?
Какой то из дефолтных плагинов oh-my-zsh
Только это не автокомплит а переход по истории введённых команд
@@i.reutenko , понял, спасибо.
Ну нет если уж взялся учить, то объясняй всё. Каждую строчку. Каждый вызов функции. Все ключи, параметры. Что такое статическая. А какие ещё бывают.
Посоветуйте литературу, где можно поподробнее почитать про cmake.
а что в заголовке .h ? файл не показан. выдает ошибку при сборке.
Круто! А как Вы реализовали генерацию кода на экране во время записи? По звуку вроде не слышно как по клавиатуре печатаете, а символы бегут...))
кажется понял, это printer.sh видимо))
@@s4ridzawa да
Как с помощью cmake создать файл проекта, например для CodeBlocks (или для другой IDE) из репозитария git? (Вопрос может быть не совсем корректен, тк разбираюсь с темой работа с OpenSource проектами). Заранее спасибо.
Посмотрите на опции генератора у cmake
Например cmake -G "codeblocks - unix makefiles" ..
@@АлексейКутасов-п7и, спасибо попробую.
Cherry blue
а можно еще урок по нему?
Просмотрел всё видео но так и не понял зачем это мне :/ Что планируете?
Как появится потребность делать кросплатформенные вещи, тогда и поймёте, зачем это вам.
Jason Turner (у него есть канал про c++ на ютубе) почему-то пишет, что "target_compile_options" - это плохой CMake. Так и не понял, что в нем плохого и на что его нужно заменить ( twitter.com/lefticus/status/1359215651433238531?s=20 )
У @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 А какой магический способ поможет сделать чтобы "все работало" кроме явной поддержки разных компиляторов в CMakeLists.txt? И при чем тут target_compile_options к этой проблеме вообще?
@@CAMOBAP795 никакой, вся ответственность на разработчике - если он использует специфический флажок компилятора, которого больше нигде нет, то кроссплатформенности никакой не будет
@@fumanchez так и есть, но я бы не стал записывать это в недостаток cmake. Использования специфичных флагов компиляции, это как использование платформозависимого API в C++. Нужно просто писать CMakeLists.txt четко понимая какие компиляторы планируете поддерживать, а например check_{c|cxx}_compiler_flag поможет проверять поддерживается тот или иной флаг и не доводить до этапа сборки в худшем случае и показывать адекватную ошибку пользователю
В Симейке все прекрасно, кроме одного - уродского синтаксиса двадцатилетней давности.
Мне кажется через некоторое время развивается "стокгольмский синдром", я теперь в нем что-то очаровательное нахожу уже)
@@CAMOBAP795 то же самое, сначала хейтил, потом стало нравится
@S0ER, меня интересует такой вопрос - А нельзя ли написать один компилятор для всех языков и под все системы? Например на VStudio можно писать на С++ под Android, но нельзя писать на чистом С под Android, в чем дело?
В принципе, можно. Также можно объединить телевизор, пылесос, аквариум, холодильник и велосипед в единое устройство. Только зачем вам такая химера?
вопрос, как чистый си будет работать на джава?
Какой-то очень странный и нубский вопрос. Зачем один компилятор для всех языков? Вы программу пишете на одном конкретном языке, в любом случае. Зачем вам для её сборки качать какой-то гигантский компилятор, который понимает всё на свете? Достаточно того, который предназначен для вашего языка.
Про то, что нельзя писать на чистом С, тоже очень странное утверждение. Компилятор С++ спокойно компилирует код, написанный на С.
Смаке
Это самое сложное объяснение которые я видел. Уж проще на сайте СМэйка туториал почитать, чем такое смотреть. Второй пример очень сложный для новичка и получается, что всё, что после первого примера, который кстати есть в любом хелпе, бесполезно. Имхо, на симэйк надо потратить какое-то время, чтобы начать понимать, зачем сделаны многие вещи, уж больно непривычный синтаксис у него.
А зачем этот cmake
ruclips.net/video/szdbKz5CyhA/видео.html Как тебе такое Mr. Soer? ))))
У тебя шкаф горит а ты про симейк рассказываешь.
Капец синьоры пошли забывчивые, таблетки хоть выпей, не позорься
Это рофл давайте без обид ок?
смысл показывать проект без какой-либо структуры папок и без вложенных CMakeLists.txt - никто так не делает в реальной жизни
да и тупо писать флаги компилятора без проверок, что это за компилятор, это тоже колхоз
Это пятиминутное видео, а вы хотите со всеми подробностями.
@@konstantinkouptsov7513 это не подробность, это основа
@@fumanchez Это явно не основа, а просто иллюстрация как использовать CMake, которая даже не объясняет принципа его работы.
@Konstantin Kouptsov думаете можете написать что-то на cmake не используя ни одной команды из видео? Заинтриговали!
@Fu Manchu смысл делать неконструктивные комментарии? У вас есть опыт в создании обучающего контента? Здорово! Дайте структуру того что и в какой последовательности надо рассказать, чтобы было по красоте. Желательно с таймингом.