Native C/C++ status

Hi,

I’m a little bit confused about native C/C++ status. The very first link on the http://gradle.org/getting-started-native/ page links to the http://carlosvin.github.io/en/posts/gradle-cpp.html, which says
"Gradle for C++ is a feature under development, we have to be careful:
Don’t use it in production environments.Many things can change or disappear."

On another hand in the http://gradle.org/gradle-an-outstanding-c-c-native-build-system/ I found that it’s outstanding and “The addition of native code support has been a major focus of the Gradle development team

The API documentation tells something else as well “Support for building native binaries is currently incubating. Please be aware that the DSL, APIs and other configuration may change in later Gradle versions.”

What is an official statement?

It’s incubating, which means the DSL may change between minor releases.

Gradle has had support for C/C++ for a long time (since 1.0), but it’s an area we’ve been working. This year we added:

  • Support for Google Test
  • Support for Precompiled headers
  • Support for parallel native compilation
  • Improved incremental build support

So, I’d say it works, but it’s not feature complete. You can build real things with it, but you might have to do more work than we think you should have to.

We’re always interested in real world feedback from people who try it out.

I can provide you a really great feedback, since in one of the project after migration we see around 5 times speed improvement comparing to the solution based on GNU Make. I’ve asked a question about plugin’s statement, since we don’t want to stack on the system which wouldn’t be maintain and supported in the near future.

You mentioned that it’s not feature completed, is there a list of coming features in native plugin?

Great to hear.

There’s not a specific list. In general, we have a Roadmap and lots of design docs.

Variant-aware dependency management is a big focus (not just for native), so you can express dependencies on different variations of the same component. For Java, that might be the JDK9 vs JDK6. For native builds, that might be ‘debug’ vs ‘release’.

I don’t see us dropping support or maintenance in the near future.