Sold Out

Advanced Gradle Fundamentals for C/C++

Event Information

Share this event

Date and Time

Event description



Advanced Gradle: C/C++ is aimed at software engineers and build maintainers who know the Gradle basics and want to focus their skills to build C++ applications (and other native languages) with Gradle. It is designed to give you a full understanding of how Gradle models the process of building software with native code. We assume you have a good grasp of topics covered by Introduction to Gradle (or earlier courses).

Our goal is to explain the practical steps necessary for you to turn your native code into your software product while developing a deeper understanding of the underlying domain concepts. This class is hands-on, so you will spend a significant portion of the class with your hands on the keyboard, learning by doing, working through lab exercises. By the end of this class, you will know how to describe your software product to Gradle and be able to use this knowledge to build native applications.

The exercises in Advanced Gradle: C/C++ are based around building an example application using C/C++. The class will be delivered by a Gradle Core Developer, which gives you an opportunity to ask questions to someone with the deepest Gradle knowledge available.


Two Days


This class is designed for software engineers and build maintainers who want to focus on building C/C++ applications with Gradle.


This class assumes a strong understanding of Gradle fundamentals. No prior experience with other build tools is necessary.


WIth this class, you will

  • Build a C/C++ application and library.

  • Create multiple versions of your application (debug, release) for multiple platforms (Windows, Linux, etc).

  • Describe your software product in Gradle’s build domain language.

  • Learn how to deal with complex build requirements.

  • Learn how to deal with multi-project builds.

  • Get to ask questions to a Gradle Core Developer!

We recommend that you continue to learn more through one of our other advanced Gradle learning courses.

Course Outline


  • What are Gradle plugins?

  • The role of plugins

  • Packaging and distributing plugins

  • Review of core plugins

Working with files

  • The file tasks (e.g. Copy, Sync)

  • Filtering, excluding,
    aggregating, renaming

  • Working with CopySpecs

  • Expanding and making archives (zip, tar etc.)

  • The Gradle file APIs

  • Best practices for working with files

Extending the model

  • Extending existing objects

  • Object extensions

  • Object containers & configuration rules

Task inputs & outputs

  • The power of the input/output model

  • Describing inputs and outputs

  • Incremental builds

  • Inferring task dependencies

The C/C++ plugin

  • Executables and Libraries

    • Project Conventions

    • Source Sets

    • Customizing Compiler Options

    • Static and Shared Libraries

    • Controlling Linkages

    • Using Prebuilt Libraries

  • Language Support

    • Build Toolchains

    • Building with C++

    • Building with C

    • Building with Assembler

    • Building Windows Resources

    • Polyglot Projects

    • Visual Studio Support

  • Build Variants

    • Build Types

    • Build Platforms

    • Build Flavors

    • Managing Variant Complexity

Multiproject builds

  • Defining a multiproject build

  • Avoiding duplicate configuration with configuration injection

  • Inter project dependencies

  • Downstream and upstream partial builds

The build runtime

  • Extending all builds with init scripts

  • Init script locations

  • Using the Gradle wrapper

  • Customizing the Gradle distribution with init scripts

Share with friends

Date and Time

Save This Event

Event Saved