Сборка проектов на C++ с использованием CMake // Демо-занятие курса «C++ Developer. Professional»

Поделиться
HTML-код
  • Опубликовано: 29 окт 2024

Комментарии • 31

  • @МихайлоФедоров-ъ9л
    @МихайлоФедоров-ъ9л 4 года назад +69

    Спасибо за ваши труды! Отличный материал для начала изучения cmake.
    Все на одном дыхании, без монтажа и почти без ошибок.
    Смотрел 2 раза, на второй раз решил сделать оглавление, вдруг что забуду. Думаю полезно будет для всех, кто будет смотреть
    2:02 Начало про OTUS
    5:31 Начало презентации
    8:27 Осторожно, звук :)
    10:13 Вступление про CMake
    41:54 example1
    42:52 cmake_minimum_required(VERSION 3.5)
    44:39 project(Example1)
    45:44 add_executable(helloWorld main.cpp)
    46:30 set_target_properties(...)
    49:18 cli> cmake ..
    51:28 cli> cmake .. -G "MinGW Makefiles"
    52:58 cli> cmake --build .
    54:39 Generators
    56:40 example2
    59:03 set(...) #обьявление переменных
    1:04:31 example3
    1:06:08 project(Example3 VERSION 0.0.1) #версия проекта
    1:06:56 config.h.in #шаблоны cmake
    1:07:46 #cmakedefine @PROJECT_VERSION_PATCH@
    1:08:45 configure_file(config.h.in ...)
    1:10:11 target_include_directories(...)
    1:16:06 example4
    1:16:51 add_subdirectory(dir_name)
    1:17:26 add_library(lib_name STATIC src_files) #создание библиотеки
    1:21:36 target_link_libraries(target lib_name)
    1:25:12 example5
    1:26:50 install(TARGETS ...)
    1:29:09 cli> cmake .. -DCMAKE_INSTALL_PREFIX
    1:30:36 cli> cmake --build . --target install
    1:33:02 find_package(...)
    1:38:21 install(EXPORT ...)
    1:39:39 cli> cmake .. -DsumLib_DIR=/path/to/cmake/export/sumLibConfig.cmake
    1:41:47 example6
    1:42:53 Custom FindsumLib.cmake
    1:49:00 cli> cmake .. -DSUMLIB_ROOT=/path/to/custom/cmake/module/FindsumLib.cmake
    1:50:33 message("...")
    1:53:08 example7
    1:53:17 option(OPTION_VARIABLE "description" initial_value)
    1:53:56 if(OPTION_VARIABLE)
    1:54:20 cli> cmake .. -DOPTION_VARIABLE=new_state
    1:56:14 example8
    1:56:31 target_compile_features(target PRIVATE cxx_generic_lambdas)
    1:58:19 Q&A

    • @pavelkarplyuk9873
      @pavelkarplyuk9873 2 года назад

      Добрый день. В этом видео говориться о том как подключать внешние библиотеки вроде GTK+?

    • @МихайлоФедоров-ъ9л
      @МихайлоФедоров-ъ9л 2 года назад

      @@pavelkarplyuk9873 Доброго дня. Як підключати конкретні бібліотеки можна дивитися в документації на цю бібліотеку, або readme файли. А цей відос націлений на отримання знань про cmake, як він працює, як створити свою лібу і тд.

    • @pavelkarplyuk9873
      @pavelkarplyuk9873 2 года назад

      @@МихайлоФедоров-ъ9л Благодарю.

  • @MrHazur
    @MrHazur 3 года назад +6

    google ну почему ты мне это показываешь, именно сейчас!? Буквально месяц назад, я потерял несколько сотен тысяч нервных клеток и отрастил пару седых волос пытаясь самостоятельно изучить настройку проекта под cmake. И когда он уверенно, самостоятельно передвигается на костылях, ты мне, только сейчас, показываешь этот превосходный урок.

  • @denissavast
    @denissavast 5 месяцев назад

    Благодарю за отличный материал ! Успехов вам !

  • @Scherbakov
    @Scherbakov 2 года назад

    Спасибо огромное!! Смотрел раньше, теперь вновь вернулся для уточнения деталей...

  • @ДарьяКолесникова-т4г
    @ДарьяКолесникова-т4г 3 года назад +1

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

  • @cast2super
    @cast2super 5 лет назад +5

    Спасибо! Очень информативно! Все по делу, хороший темп и скорость подачи материала и кнопкоклацания!

  • @IT-no1wi
    @IT-no1wi 5 лет назад +3

    Великолепный вебинар!

  • @vyorkin
    @vyorkin 5 лет назад +3

    клёвая подача, было не скучно смотреть

  • @Dolbatehnik
    @Dolbatehnik 2 года назад

    Шикарное объяснение! Спасибо большое!

  • @ВалентинНикин-ь2л
    @ВалентинНикин-ь2л 3 года назад

    Интересная лекция. Спасибо

  • @yunushkin88
    @yunushkin88 7 месяцев назад

    очешуенная понятная лекция спасибо!

  • @lamero74
    @lamero74 5 лет назад +2

    Мне понравилось!

  • @babichfx
    @babichfx 3 года назад

    Спасибо!

  • @fatoldhikki4837
    @fatoldhikki4837 4 месяца назад

    вот я сейчас пытаюсь подружить Cmake с ninja и Conan'ом + vcpkg на gcc и по виндой, есть кто делал что-то подобное?

  • @СергейГончаров-э4г
    @СергейГончаров-э4г 3 года назад

    Очень информативно, но что то я не могу повторить пятый пример, не создается папка install, правда я делаю по MinGW, но все равно же это не должно иметь значение? Друзья подскажите , что я делаю не так?
    Содержимое папки D:\a_school\CMake\Vebinar\New_dir\example5\sumLib
    16.08.2021 20:38 .
    16.08.2021 20:38 ..
    16.08.2021 21:48 build
    14.06.2019 22:46 730 CMakeLists.txt
    14.06.2019 22:46 66 config.h.in
    14.06.2019 22:46 260 sumLib.cpp
    14.06.2019 22:46 86 sumLib.h
    4 файлов 1 142 байт
    3 папок 148 725 764 096 байт свободно
    D:\a_school\CMake\Vebinar\New_dir\example5\sumLib>cd build
    D:\a_school\CMake\Vebinar\New_dir\example5\sumLib\build>dir
    Том в устройстве D имеет метку Новый том
    Серийный номер тома: 5AAF-8390
    Содержимое папки D:\a_school\CMake\Vebinar\New_dir\example5\sumLib\build
    16.08.2021 21:48 .
    16.08.2021 21:48 ..
    0 файлов 0 байт
    2 папок 148 725 764 096 байт свободно
    D:\a_school\CMake\Vebinar\New_dir\example5\sumLib\build>cmake -G "MinGW Makefiles" .. -DCMAKE_INSTALL_PREFIX=INSTALL
    -- The C compiler identification is GNU 9.2.0
    -- The CXX compiler identification is GNU 9.2.0
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: C:/TDM-GCC-64/bin/gcc.exe - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: C:/TDM-GCC-64/bin/g++.exe - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Configuring done
    -- Generating done
    -- Build files have been written to: D:/a_school/CMake/Vebinar/New_dir/example5/sumLib/build
    D:\a_school\CMake\Vebinar\New_dir\example5\sumLib\build>cmake -G "MinGW Makefiles" --build .
    -- Configuring done
    -- Generating done
    -- Build files have been written to: D:/a_school/CMake/Vebinar/New_dir/example5/sumLib/build
    D:\a_school\CMake\Vebinar\New_dir\example5\sumLib\build>cmake -G "MinGW Makefiles" --build . --target install
    CMake Error: The source directory "D:/a_school/CMake/Vebinar/New_dir/example5/sumLib/build/install" does not exist.
    Specify --help for usage, or press the help button on the CMake GUI.
    D:\a_school\CMake\Vebinar\New_dir\example5\sumLib\build>

  • @Илья-ф9г5ы
    @Илья-ф9г5ы 4 года назад +1

    Отличное объяснение, можно ссылку на код примеров

  • @rudinandrey
    @rudinandrey Год назад

    сначала пишешь программу на одном языке программирования, потом ее компилируешь на другом языке программирования :))))

  • @maxpo801
    @maxpo801 2 года назад +1

    Буржуи? Серьезно? 21 век уже. Откуда такая дремучесть у айтишника?

  • @ЖукИзЗкд
    @ЖукИзЗкд 4 года назад

    Привет

  • @elkadaf
    @elkadaf 3 года назад +4

    17:38
    Наглая ложь. Стандарт прямо утверждает, что С++ выполняется на абстрактной машине -> кросплатформенный.

    • @Uni-Coder
      @Uni-Coder 3 года назад +3

      Какой забавный тролль :) Попробуйте сначала почитать, хотя бы на stackoverflow, зачем ввели понятие "абстрактной машины" в C++, а потом запустить код, _скомпилированный_ для одной машины, на _другой_ машине, прежде чем писать про "наглую ложь". Тем более, что лектор прямо сказал - попробуйте бинарник, собранный для винды, запустить под линукс.
      "Эта концепция используется для абстрагирования внутренней работы физических машин", чтобы не вводить понятия "регистр, кэш, стек, куча" и не объяснять поведение программ на уровне конкретных машинных инструкций - stackoverflow.
      Когда человек что-то не понял, сомневается и у него есть вопросы - одно дело, это я могу понять. Но *начинать предложение* с фразы "наглая ложь", когда нихрена не разобрался - это верх троллинга.
      Тогда я вашу фразу назову *сверхнаглейшей гиперложью", поскольку:
      1) C++ не выполняется. Выполняются программы.
      2) В стандарте хотя и введено понятие абстрактной машины, но *нигде не написано, что программы **_выполняются_** на абстрактной машине* . Написано лишь, что конкретная программа, скомпилированная на _конкретной реализации_ стандарта, должна иметь такое же наблюдаемое поведение, как "если бы" запускалась на абстрактной машине.
      3) А ещё стандарт вводит понятие "реализации" и конкретные реализации стандарта вполне могут быть несовместимы между собой.

    • @elkadaf
      @elkadaf 3 года назад +1

      @УниКод какой неленивый человек. Мне вот лень отвечать на что-то столь длинное, но из некоего уважения за затраченные усилия, пожалуй, отвечу. Хотя зачем же было тратить эти усилия на тролля? :) Почитав ответы на stackoverflow, боюсь, вы многое упустили, не поняв сути. Во-первых, моё утверждение было к словам "С++ не кроссплатформенный", а не к бинарникам. Во-вторых... Представьте себе, кроссплатформенность на уровне стандарта != бинарная кроссплатформенность. Стандарт - это API, бинарная совместимость ABI, про которую стандарт ничего не знает. И что утверждает стандарт, так это то, что программа, которая выполняет его требования, будет исполняться одинаково на любой корректной реализации абстрактной машины. Боюсь, вам бы тоже стоило сначала разобраться, прежде чем называть что-то троллингом :)
      То же самое насчёт ваших утверждений про исполнение программы. Я мог бы признать, что моё утверждение содержало некоторую неточность... Если бы ваши утверждения были корректными. По сути, часть стандарта об абстрактной машине говорит о том, что мы можем воспринимать машину, являющуюся корректной реализацией обозначенной стандартом абстрактной машины, как машину, машинным языком которой является С++. И моё утверждение в таком контексте является более чем корректным. Это вот именно про то самое "наблюдаемое поведение как если бы программа исполнялась на абстрактной машине". Насчёт же последнего, боюсь, ваша фраза тоже требует уточнения, иначе получается некая чушь. Conforming implementations не могут быть несовместимы между собой. Они будут выполнять одинаково такой же код на С++, пока он выполняет требования стандарта. Что они делают когда требования стандарта не исполняются нас уже не волнует. Если же вас волнуют аспекты бинарной совместимости, всё ещё сочувствую, но стандарт не об этом.

  • @andrewlatyshev904
    @andrewlatyshev904 2 года назад

    а можно было без этих пустых 10 минут вначале?