4 ms·
linuxbrew / homebrew does a pretty good job at downloading packages and compiling them. The wildcard is cross-platform. vcpkg doesn't seem to be 100% there an
by dana321 8y ago
linuxbrew / homebrew does a pretty good job at downloading packages and compiling them.
The wildcard is cross-platform. vcpkg doesn't seem to be 100% there and has many bugs for example the folders where includes and libraries are kept changes based on platform.
The other problem is static vs dynamic linking, as well as conflicts between different combinations of cmt libs etc. it gets very messy quickly.
Its almost like you're spending more time trying to get all the libraries you want working together than actually coding.
- rienbdj 8y agoThe solution in my experience (also the approach at Google) is to always build from source but cache the build artefacts. This is how Buckaroo works too (although it is Buck instead of Bazel).
- entelechy 8y agoyes and you can also distribute your cache [1] Furthermore it uses git to manage the sourcecode and use shallow&shared clones to have quick downloads. [1] https://buckbuild.com/files-and-dirs/buckconfig.html#cache https://buckbuild.com/files-and-dirs/buckconfig.html#cache Lastly I'd like to note that Buck and Bazel are converging to Skylark for describing builds. The differences between Buck and Bazel should become smaller over time
- ghthor 8y agoPants has also converged with Bazel around BUILD file formats.
- spacksmack 8y agoObligatory Spack reference: Spack is also worth checking out if you want to build everything from source. A lot of the national labs use spack now because you can specify all the dependencies for a tool (eg, g++8, boost1.68, opempi3) and it will build out any of the missing tools/compilers for you in one command. It doesn't solve the build system stuff like buckaroo, but it works with whatever build stuff I want to do (cmake, make, sh). https://spack.io/ https://spack.io/