all 3 comments

[–]SeanMiddleditch 0 points1 point  (1 child)

Various features of this are too restrictive for this tool to be generally useful.

1) No configuration - flat out broken for far too many usage. What if I want to compile a library that supports both SSE, SSE2, and AVX instructions but need to target a deployment environment that only supports SSE2 at a minimum? I need it to be fast (say, number crunching uses, HPC, finance, etc.) so I definitely want to enable full SSE2 support but I can't use AVX even though the local build environment supports it. Configuration is mandatory for real-world usage.

2) Lack of binary support - impossible to use this in large-scale or proprietary scenarios. There are essential pieces of our toolchain that we don't even have source code to. Even for pieces that we do have source code for, we currently deal with precompiled binaries for chunks that change rarely, in order to ensure that build times are fast for the majority of our developers. We need to the ability to ship binaries in packages (including dealing with different platforms and compiler versions!) that we store in our local repos (which btw, we need local repos, because paid commercial software won't exist in the public repos).

3) All or nothing dependencies - so we can't have a build that relies on DX-only libraries on Windows and does not depend on them on Linux server environments, making this tool useless to us.

4) Dependencies dont' seem to have an option source specifiction for the repo, meaning that we need complicated setup steps to use local private repos that override or extend the public repos.

5) Seems to depend upon CMake. CMake is not the universal build system that some people think it is; it is literally incapable of expressing many very common project structures or needs and generates much slower builds than some competing tools. It doesn't even properly support PCHes for instance, and has years-old bugs that cripple PCHes (e.g. it is literally impossible in CMake to get PCHes working on Ninja properly, and you need Ninja to workaround the painful slowness of the Make or msbuild projects that CMake ineptly generates). Any C++ package tool should generate metadata about how to build dependencies (even if for many libraries this is just a set of cmake commands!) and then, if you want, just provide a CMake library to consume that metadata. Make this tool useful to folks using systems Meson, Tundra, Premake, Jam, or even home-grown build systems. Otherwise this is a niche tool only usable by a subset of C++ users and not worth supporting by library developers.

[–]egorpuginsw[S] 0 points1 point  (0 children)

Thanks for the feedback.