2012-07-11 10 views
7

He configurado un proyecto en la parte superior de Qt (por lo que la fuente está escrita en C++) y quería probar Gradle para compilaciones automáticas sobre eso. Me tomó algo de tiempo entrar en los detalles de configuración de una compilación de múltiples proyectos (hay un ejecutable y dos libs) y ahora estoy tratando de decirle al cpp-exe y al plugin cpp-lib cómo está estructurado mi árbol fuente.Configurando fuentes cpp en gradle

He creado una tarea que debe imprimir todos los conjuntos de código (debe haber por lo menos el defecto más adecuados?) Y se ve así:

task projectinfo { 
description = "Informations about the current project" 
group = INFORMATIONS_GROUP 

doFirst { 
    task -> print ("""${task.project.sourceSets.all}""") 
} 

Si me quedo esta tarea Gradle dice que no hay propiedad "sourceSets" para el proyecto. The documentation of the plugin me dice que es posible personalizar las ubicaciones de origen, pero no cómo.

Así que mi pregunta sería: ¿Cómo puedo decirle al plugin Gradle cpp qué archivos fuente usar? Si hay alguna documentación sobre el complemento cpp aparte de su documentación de API y la guía de usuario de Gradle, también estaría ayudando.

Respuesta

9

Eche un vistazo a Adam Murdoch's usage de Gradle's 'cpp plugin'. Creo que es uno de los principales peticionarios Gradle, por lo que debería saber cómo utilizar mejor que nadie:

Exert de native-platform/build.gradle

cpp { 
    sourceSets { 
     main { 
      source.exclude 'curses.cpp' 
     } 
     curses { 
      source.srcDirs = ['src/main/cpp'] 
      source.include 'curses.cpp' 
      source.include 'generic.cpp' 
      source.include 'generic_posix.cpp' 
     } 
    } 
} 

Then, within the 'libraries' node, refer to all/any combination of architecture and source sets: 

sourceSets << cpp.sourceSets.main 
sourceSets << cpp.sourceSets.curses 

no he tenido demasiado tiempo para mirar por encima del mismo, pero parece que define varias combinaciones de código fuente basadas en la arquitectura del sistema operativo y las almacena en la variable variantes. Luego los procesa en JARs de plataforma (aún no ejecuté la compilación, tal vez debería).

Además, eche un vistazo a https://github.com/rklaren/GradleJNI, usa el cpp plugin pero parece estar orientado a Windows.

Actualización - También encontré https://github.com/alkemist/gradle-cpp-demo, que tiene un ejemplo del complemento 'cpp-exe' que construye un ejecutable.