C++ Package Manager - C++ Dependencies Don't Have To Be Painful! - Augustin Popa - ACCU 2023

Поділитися
Вставка
  • Опубліковано 6 сер 2023
  • ACCU Membership: tinyurl.com/ydnfkcyn
    accu.org
    www.accuconference.org/
    C++ Package Manager - C++ Dependencies Don't Have To Be Painful! - Augustin Popa - ACCU 2023
    Slides: accu.org/conf-previous/accu2023/
    The C++ community (especially professional developers) are increasingly looking for tools that can automate their development processes. Organizations spend significant amounts of time maintaining in-house tools, scripts, and other assets designed to keep their developers productive. This talk addresses one area impacted by this: managing C++ dependencies. There are lots of package managers on the market, and several have been gaining popularity in recent years. If you are interested in learning what modern package managers can do for you, and which package managers to use in different situations, this talk is for you.
    According to recent surveys from the Standard C++ Foundation, a majority of C++ developers are manually managing their library dependencies. Curiously, one of the top pain points cited in these surveys was also “managing libraries”. I believe these two points are correlated.
    In this talk, I will discuss how different types of package managers address these pain points, from system package managers like apt and Homebrew to build system centric package managers like NuGet and language package managers like vcpkg and Conan. There are pros and cons to every solution, and some package managers are more effective in some workflows than others. Managing libraries doesn’t have to be painful. If you configure your workflow right, you will save time not having to maintain additional git submodules, source code, or reading build instructions on GitHub.
    I’ll also talk about a few scenarios related to dependency management: acquiring open-source libraries vs. private libraries, automatically building libraries from source, using libraries locally and in CI, using libraries with different build systems and operating systems, and acquiring developer tools from a package manager. You will come out of this talk with an understanding of how a package manager can rid you of your dependency woes.
    ---
    Augustin Popa
    Augustin is a Senior Product Manager at Microsoft working on C++ developer experiences for the past 7 years. Currently he is working on vcpkg, a cross-platform and open-source C++ package manager. In the past he has worked on productivity, AddressSanitizer, and setup experiences in Visual Studio.
    ---
    UA-cam Videos Filmed, Edited & Optimised by Digital Medium: events.digital-medium.co.uk
    #accuconf #programming #dependencies
  • Наука та технологія

КОМЕНТАРІ • 8

  • @TheLavaBlock
    @TheLavaBlock 11 місяців тому +2

    good summary. thank you for the well done overview of the existing package managers.

    • @ACCUConf
      @ACCUConf  11 місяців тому +1

      Thank you for your positive comments which are much appreciated.

  • @kuhluhOG
    @kuhluhOG 11 місяців тому

    27:20 Can you as an end consumer also just say that you want the absolute latest version?

  • @duckydude20
    @duckydude20 11 місяців тому

    what's the difference between cmake, ninja and pkg managers. i know they are build tools. but whats the difference?

    • @kevindelnoye9641
      @kevindelnoye9641 11 місяців тому

      Cmake generates a build system like make, ninja or visual studio project. Cmake is technically therefore a build system generator although practically it's a build system just like others. PKG managers are responsible for dependency management of different projects with different build systems. Vcpkg is using cmake as the main build system, Conan is more build system agnostic but I think cmake still easiest to use.

    • @Sjefke3000
      @Sjefke3000 11 місяців тому

      Cmake describes how to compile a project, ninja compiles the project. The package managers tell cmake where to find external libraries.

    • @olzhaszhumabek2034
      @olzhaszhumabek2034 11 місяців тому

      CMake is used to create build and consumption rules for modular pieces of software (which compiler and/or linker flags to propagate to the user). ninja is an implementation of those rules (as are makefiles and whatever visual studio generates). Package managers manage the pieces of software, solving problems like propagating install paths and settings, solving dependency graphs and version inconsistencies.

    • @xingheng4463
      @xingheng4463 10 місяців тому

      Build backend + Project Generator + Package Manager
      Make/Ninja + CMake/Meson + Vcpkg/Conan