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 - Наука та технологія
good summary. thank you for the well done overview of the existing package managers.
Thank you for your positive comments which are much appreciated.
27:20 Can you as an end consumer also just say that you want the absolute latest version?
what's the difference between cmake, ninja and pkg managers. i know they are build tools. but whats the difference?
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.
Cmake describes how to compile a project, ninja compiles the project. The package managers tell cmake where to find external libraries.
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.
Build backend + Project Generator + Package Manager
Make/Ninja + CMake/Meson + Vcpkg/Conan