Using repository dependencies with native plugin

Hi, I’m migrating from gradle 1.12 to 2.2 and ran into a problem

You used to be able to do:

sources {
    main {
      cpp {
        source {
          include '**/*.c'
        }
        dependency 'somegroup:somelib:123-x86'
      }
    }
  }

But this was removed as of 2.1 http://www.gradle.org/docs/2.1/release-notes#changes-to-the-incubating-languagebaseplugin.

I don’t see a way to achieve the same behavior though?

Proper native dependency management is planned, but not completed (you can see design docs on GitHub). The new syntax only supports project and pre-built libraries at the moment (no remote dependencies).

What used to happen, under the covers, was the dependency was converted into two dependencies:

...
   someConf"somegroup:somelib:123-x86:so@so"
   someConf"somegroup:somelib:123-x86:headers@zip"
...

Then resolved into temporary directories and wired into the options for the compiler/linker. It’s possible to do that yourself still. You’d have to create your own configuration, download task, generate pre-built library blocks for each dependency, etc. If you don’t have to worry about too many variants, you can probably cut some corners (native dependency management is hard).