"cpp dependencies don't have to be painfull..." 1 hour video lenght scares me, Java has maven, c# has nuget, nodejs has npm, why is It so difficult to come up with a simple solution for cpp?
Easiest part: Because Java and C# compile to Bytecode, JS doesn't compile at all. Basically the only problem discussed in this that applies to either of those is the diamond dependency version problem. The story for C++ is so much more complicated because it can do so much more. It doesn't offer one single target to compile down to, it offers several - not just different architectures like x86 vs ARM and such, but also for stuff like SIMD-Extensions on x86 platforms. Some libraries offer optional features that you can specify with flags to the library that are otherwise stripped for optimization: You don't ever need to handle ogg files with your ffmpeg? Great, you can tell it to not include ogg support! Or imagine a library that can work in both an exception-based and an exception-free world - can also be configured with a flag. What if a library has a dependency not on a specific one, just one fulfilling certain requirements - some regex backends, or a linear constraints solver like Z3 and others, are examples where I've seen this used. Flags flags flags. Oh and of course, do you want to build with static or dynamic linking? Position-Independent Code or not? What if some library isn't built for PIC but the others are? The only other build system I know that has a flag system like that are Rust's Cargo, and Haskell's Cabal. And don't even get me started on the possibilities that macros in general provide in C++ for selectively including/excluding/swapping different parts of code. It's not easy, not in the slightest, but with it comes incredible adaptibility to the target platform(s), usage scenarios etc. The tradeoff is that you barely can do any of those things I mentioned within C#, Java or NodeJS, at least not at compile time - yes SLF4J provides abstraction from your log implementation, but that only works because of the JVM Runtime facilitating the discovery. PS: Java doesn't just have Maven. You forgot about Ant, Gradle, and the Scala/Java hybrids SBT and Mill, and I'm sure there's others that aren't niche out there too.
What's the recommended way of adding a project-specific patch to a dependency when using vcpkg? Say, for instance, my project is using EASTL and I've found a non-trivial bug in one of their container implementations. Of course I'll submit a bug report, which will hopefully be resolved with the next release; but what do I do in the meantime? I can put together a workaround that fixes the issue for my project, but how do I communicate that patch to vcpkg? Do I need to fork and host a copy of EASTL, with my workaround applied? Or can I instruct vcpkg to always build EASTL from source and include this patch over here?
I think I've already seen this presentation some months ago. It goes on to describe what Linux distros have been doing for thirty years, except they go beyond just one programming language.
"cpp dependencies don't have to be painfull..." 1 hour video lenght scares me, Java has maven, c# has nuget, nodejs has npm, why is It so difficult to come up with a simple solution for cpp?
What is simple is CPP? :(
Easiest part: Because Java and C# compile to Bytecode, JS doesn't compile at all. Basically the only problem discussed in this that applies to either of those is the diamond dependency version problem.
The story for C++ is so much more complicated because it can do so much more. It doesn't offer one single target to compile down to, it offers several - not just different architectures like x86 vs ARM and such, but also for stuff like SIMD-Extensions on x86 platforms. Some libraries offer optional features that you can specify with flags to the library that are otherwise stripped for optimization: You don't ever need to handle ogg files with your ffmpeg? Great, you can tell it to not include ogg support! Or imagine a library that can work in both an exception-based and an exception-free world - can also be configured with a flag. What if a library has a dependency not on a specific one, just one fulfilling certain requirements - some regex backends, or a linear constraints solver like Z3 and others, are examples where I've seen this used. Flags flags flags.
Oh and of course, do you want to build with static or dynamic linking? Position-Independent Code or not? What if some library isn't built for PIC but the others are? The only other build system I know that has a flag system like that are Rust's Cargo, and Haskell's Cabal.
And don't even get me started on the possibilities that macros in general provide in C++ for selectively including/excluding/swapping different parts of code.
It's not easy, not in the slightest, but with it comes incredible adaptibility to the target platform(s), usage scenarios etc. The tradeoff is that you barely can do any of those things I mentioned within C#, Java or NodeJS, at least not at compile time - yes SLF4J provides abstraction from your log implementation, but that only works because of the JVM Runtime facilitating the discovery.
PS: Java doesn't just have Maven. You forgot about Ant, Gradle, and the Scala/Java hybrids SBT and Mill, and I'm sure there's others that aren't niche out there too.
What's the recommended way of adding a project-specific patch to a dependency when using vcpkg? Say, for instance, my project is using EASTL and I've found a non-trivial bug in one of their container implementations. Of course I'll submit a bug report, which will hopefully be resolved with the next release; but what do I do in the meantime? I can put together a workaround that fixes the issue for my project, but how do I communicate that patch to vcpkg? Do I need to fork and host a copy of EASTL, with my workaround applied? Or can I instruct vcpkg to always build EASTL from source and include this patch over here?
I think I've already seen this presentation some months ago. It goes on to describe what Linux distros have been doing for thirty years, except they go beyond just one programming language.
When do you merge efforts with Conan ?
Isn't there Conan?
Yeah but apparently ver. 2.0 made it pretty good to awful
is live videos on cppcon prerecorded?
They all suck. i thought conan was okay atleast i made it to code. until dll's started mysteriously going missing. Mysys, vcpckg. its all TRASH.
Get some sleep Augustin! You do look exhausted. Don't kill yourself for Msoft