7
galena
2y

Yo I heard you like compiling C/Cpp so we make you compile and link each individual file so you need a makefile for compiling everything. But that shit still gets to annoying to maintain so you make the make files with cmake. Just so you can compile a library basically at all.
And dont get me started on autoconf and random configure scripts you have to run before you actually configure shit.
Can we make compiling a regualr program any more difficult so that we need a whole ass A4 page of documentation just to end up with a binary of something?

Comments
  • 1
    Tell me more about your "Javascript", what's this triple equals thing?
  • 2
    Then don't use Makefiles.
  • 4
    E.g. https://mesonbuild.com .

    Takes away a lot of pain, mostly by stripping away (and limiting) the feature set complex build systems have.

    Doesn't mean meson is "inferior".

    Just that most build tools can do stuff that is nowadays obscure, unnecessary and insane (like in layers of hell insane).
  • 5
    cargo run --release
  • 2
    @thebiochemic

    Cannot be compared, to be fair.

    Rust compiles _static_ by default.

    C/C++ always _shared_. Entirely different things...
  • 3
    @IntrusionCM That is entirely fair, that is a design decision to prevent that complexity. Just like go build ./...
  • 3
    @hjk101

    If you want to compare them, you would need to take them apart bit by bit.

    Cause cargo is a package manager and wrapper for all kinds of things...

    Should have said that before, but coffee missing.

    Regarding static linking... It isn't just a blessing, it comes with it's own curses. Same for shared linking.
  • 0
    @IntrusionCM I think it's fair to compare cargo to meson. Both contain a build system and dependency management infrastructure.

    But IMO, meson is a lot more flexible and can handle complex cases, like multi-language projects, better.

    On the other hand, starting a new rust project is really straightforward, due to cargo's defaults and lack of configurability.
  • 1
    @korrat Cargo is a package manager...

    It has the ability to create a dependency specification, creating a manifest of dependencies.

    It can resolve the dependency manifest against a package registry, download, link and build all dependencies mentioned.

    Plus the ability to hook in custom build scripts.

    Meson has not these abilities.

    It is just a build tool with predefined templates for e.g. compiler detection.

    Package managers are complex....
    Especially version and dependency resolution.

    By the classic approach of Unix "do one thing and do it well"… the task of dependency management was left to the package managers of the distribution.

    Meson would need to be hooked up to apt-get / rpm / ..., as a *source package* (source deb/rpm ...) build to be "comparable" to cargo.

    As only the source package contains the definition of dependencies, combined with the package manager and build tools the ability to process it and create a build environment so all dependencies are resolved.
  • 0
  • 0
    @IntrusionCM that was not a comparison. I'm saying, there are tools, that actually do a good job on it, without blowing up the readme files with configure this and that, install cmake, ninja, meson, run that sh script, etc.

    I don't see any reason to not compare different build systems, that ultimately deliver a binary, regardless of libs being static or dynamic. But now that you said it, even setting rust up to use dynamic libraries is still less work.
  • 0
    saying that, i actually liked CMake quite a bit, because i could just write a makefile with all targets and stuff, that needs to be pulled, and just ran the cmake command on a specific target.
  • 1
    Just don't use makefiles. They are a relict of the past. Could try SCons or one of the other build systems invented after the death of the Unix mainframe.
  • 1
    Is this the hot girl stuff you talk about in your profile?
  • 2
Add Comment