4 ms·
Single file or header only libraries were really useful before C++ had package managers. There's conan now. I think microsoft has some tools for that too - vcpk
by NullPrefix 2y ago
Single file or header only libraries were really useful before C++ had package managers. There's conan now. I think microsoft has some tools for that too - vcpkg or nuget
- Ygg2 2y agoNuget is .Net, no?
- shortrounddev2 2y agoThey have c++ packages too
- flohofwoe 2y agoI mean, even npm can be used as package manager for C/C++ libraries (e.g. https://gitlab.com/floooh/sokol-npm https://gitlab.com/floooh/sokol-npm), doesn't mean it's a good idea ;)
- mystified5016 2y agoI just spent the last week building up CI to distribute C++ packages on nuget. Microsoft really does not want you to do this, but they still allow it.
- atiedebee 2y agoThey are still general very easy to install. Also, C programmers don't seem to use any package managers other than the default system package manager and maybe git sub-modules (at least, not that I know of).
- shortrounddev2 2y agoYeah C programmers tend to be stuck in the late 90s
- NullPrefix 2y agoconan also works with C language, not just C++
- mananaysiempre 2y agoC on Unices is very well served by pkg-config[1] and its reimplementations[2,3]. (The last of these should also work well with MSYS2 on Windows, but it’s not—yet?—widely used in that environment.) The nice thing is that it has no opinions on your build system or even package manager, it’s purely for package discovery at build time. [1] https://www.freedesktop.org/wiki/Software/pkg-config/ https://www.freedesktop.org/wiki/Software/pkg-config/ [2] http://pkgconf.org/ http://pkgconf.org/ [3] https://nullprogram.com/blog/2023/01/18/ https://nullprogram.com/blog/2023/01/18/
- hgs3 2y ago> Also, C programmers don't seem to use any package managers other than the default system package manager and maybe git sub-modules (at least, not that I know of). For what it's worth, as someone who primarily writes C, not C++, I use the system package manager, vendoring, and sometimes Git submodules, depending on the project. On Windows, when I'm using MSYS2, I use the pacman package manager. If I'm targeting MSVC, I use CMake. For CMake, on Windows, I create my own directory where I place prebuilt dependencies for CMake to find [1]. With this approach, I can rely on CMake's builtin find_package behavior (no need for vcpkg and configure-time toolchain flags). [1] https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure https://cmake.org/cmake/help/latest/command/find_package.htm...
- flohofwoe 2y agoOne problem is that there's too many to choose from, so there might just as well be none from a library author's point of view. It's the same problem with putting build system files into your library source distribution - which build system to pick? Libraries that come as a header, or a small number of headers and source files have none of those problems because they are trivial to integrate without requiring package manager or build system magic. E.g. only top level projects should pick a specific build system and package manager, but not libraries.
- MaulingMonkey 2y ago+1 Just this month I saw yet another sufferer of the consequences of disparate build systems. This resulted in a mixture of GCC and LLVM, which disagreed on the basic ABI for C enums for unknown/none-platform ARM. (ARM's ABI gives multiple options, leaving the choice of which option to use to the platform ABI... which for unknown/none is obviously missing.) While I consider single-header libs overkill for my own taste in authoring things, I can't deny their continued ease of use in consumption. They're still useful. Sadly. If only because it won't be yet another source of debugging and fixing on my part when coworkers less familiar with integrating 3rd party dependencies into "our" build system either mess things up, or foist that work onto me - introducing delays and reducing bus factor.
- Joel_Mckay 2y agoIndeed, from a longterm maintenance perspective mitigating dependencies has advantages, and greatly simplifies porting. For example, the answer to "how do we build this on architecture X?"... should not be install 28000 source files, and wait 3 days to discover half of the packages broke the build... because fork you that's why. lol =3
- deleted 2y ago[deleted]
- taminka 2y agothere is no build system that everyone has installed/is familiar w, single header libraries are as portable as C or UTF-8 itself are (so still the best choice), the only other alternative i see it using C itself as build system (i mean why not)
- almostgotcaught 2y agoThere's a kind of hn comment that pops up very frequently - aspirational/delusional/out of touch: people repeating hype as truth that no one that actually lives in the space would repeat. Stuff like this (lol I don't know a single serious C++ project using conan/vcpkg/etc), or that mojo has replaced all of Python/C/C++ (not will replace but has!), or that Rust has replaced C/C++, or the LLMs have obviated everything. I have no clue how someone can both be so clueless and yet so sure.
- deleted 2y ago[deleted]
- sitkack 2y agoYou are just name calling, there is nothing substantive in your argument. It is rude and offputting.
- almostgotcaught 2y ago> You are just name calling who did i call a name?
- ranger_danger 2y agoThis is dogmatism, or "speaking in absolutes", and it's extremely common with pseudo-intellectuals in general. The Dunning-Kruger effect also applies to smart people. You don't stop when you are estimating your ability correctly. As you learn more, you gain more awareness of your ignorance and continue being conservative with your self estimates. My own take on this: I think real intelligence by definition requires humility. One has to realize that we can't know the things we don't know, which includes the fact that we can't always trust our own beliefs and opinions because we might be relying on faulty or incomplete information, or we might be suffering from a mental health problem, whether we are aware of it or not. "As a rule, strong feelings about issues do not emerge from deep understanding." -Sloman and Fernbach
- ranger_danger 2y agoI know this is only a sample size of 1 but I have never heard of any C or C++ developer using a package manager like conan/vcpkg/nuget, and I am assuming those are mostly used on Windows anyways.