this post was submitted on 06 Feb 2025
19 points (91.3% liked)

Programming

18082 readers
242 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

I know little about gradle and have only just started exploring it, so this is just a question out of curiosity.

It's supposedly a language agnostic dependency manager and builder, yet it seems to have only found its niche in Java. C/C++ projects could definitely do with dependency resolution...

all 14 comments
sorted by: hot top controversial new old
[–] [email protected] 32 points 16 hours ago (1 children)

Gradle is pretty awful actually, I’ve had to deal with it for years when I was writing Java. It’s pretty much the #1 reason I’ve stopped doing anything Java related.

Meson is the well designed option for C family languages. It also has support for Java, Rust, Swift, and a couple other languages. C is the most well supported though I think.

It also has a built-in dependency downloader that respects the system installed packages (and therefore distro packagers).

[–] Quetzalcutlass 4 points 6 hours ago* (last edited 6 hours ago)

Gradle is so insanely over-engineered that it can do almost anything, yet so fragile that it can take weeks of bashing your head against the wall to get your build scripts working if you're doing anything remotely complicated with your setup (or even just upgrading Gradle versions). Everything is so finicky that even if you do things exactly as the documentation says, you'll still have to finagle things around nine times out of ten to get it to compile.

The user guide is longer than some novels.

[–] [email protected] 34 points 18 hours ago* (last edited 18 hours ago) (3 children)

Here are a couple of reasons:

  • C and C++ projects often predate Gradle by decades they will not change their build system without a compelling reason.
  • Gradle is written in Java and requires a Java Runtime.
  • At least for C++, CMake has pretty much become the standard build tool.
  • Dependency resolution on Linux was 'solved' by relying on the distribution. Today, there also exist package managers for C and C++ like vcpkg or conan and they also integrate with CMake.
[–] [email protected] 12 points 18 hours ago

Cmake tends to be the upgrade path for sure, gradle is... hideous, i have having to use it for android.

[–] [email protected] 1 points 17 hours ago (2 children)

Are vcpkg and conan widespread in your experience? Mine has still been majorly "works on my machine with unnamed debian version and unrestricted library version", which still breaks like 90% of the time.

Anti Commercial-AI license

[–] paperplane 4 points 17 hours ago

I know a bunch of larger C++ apps that use vcpkg for cross-platform (Windows/macOS/Linux) builds of their dependencies and it seems to work pretty well

[–] [email protected] 2 points 17 hours ago

I worked on a couple commercial C++ applications that used vcpkg. It's not as convenient as nuget, cargo or npm but it think it is a massive improvement over manually hunting for dependencies.

[–] [email protected] 11 points 15 hours ago (1 children)

Programming languages come with their own niches, tools, culture, and history. Gradle has lots of verbosity, complexity, and so on. It’s a build system and a dependency manager in one. Other languages separate these duties.

A cultural preference for tools written in specific languages or available for specific platforms exists as well. Lots of C/C++ programmers dislike everything Java. They will cite performance and philosophy. They ask why should they install and manage JVM versions and installs for a task they can do with a make file, a shell script, and Conan/vcpkg.

Not even all Java folks use gradle. maven and ant ant are still around and I’ve seen someone write Java build tasks using rake.

[–] kameecoding 3 points 8 hours ago

As someone who used gradle then didn't for a few years and looked back it, damn did they absolutely butcher the whole thing, not to mention now with the dual kotlin/groovy stuff the documentation is incomprehensible and achieving something that was easy as fuck in groovy like copying some files is a nightmare in kotlin.

The parallel builds seems to be almost entirely gone, de dependency management got an even weirder file format. I have no idea what they are doing

[–] [email protected] 9 points 14 hours ago

no please don't. Whenever I try to install something old and I realise it's written in java I just give up after days of trying or end up with like 4 java versions installed and different dependencies need different versions.

I see gradle written while doing so, thus I associate it with HELL.

[–] [email protected] 14 points 18 hours ago (1 children)

As an Android and Java engineer.

No, let them have CMAKE until they learn RustLang and use Cargo.

[–] [email protected] 1 points 17 hours ago

You don't want them invading the Android and Java space? 😄

Anti Commercial-AI license