Sul mio file system locale ho il seguente progetto di C struttura di directory:Gradle C Plugin by Example
derpus/
src/
derpus/
c/
derpus.c
headers/
build.gradle
Dove derpus.c
è:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
puts("Derp!");
return EXIT_SUCCESS;
}
Vorrei utilizzare il Gradle Native (C) Plugin per gestire il spettro completo della build derpus
. In particolare vorrei Gradle a:
- generare un wrapper Gradle in modo che posso usare
gradlew
per tutte le mie invocazioni di compilazione; e - Compilare & in
derpus
inderpus.exe
tramitegradlew
; e - Generare Eclipse informazioni progetto quando corro
gradlew eclipse
in modo da poter poi importare il progetto in Eclipse (ho già pre-installato il plugin di Eclipse CDT)
Ecco il mio build.gradle
:
apply plugin: 'c'
apply plugin: 'eclipse'
sources {
c {
source {
srcDir "src/derpus/c"
include "**/*.c"
}
exportedHeaders {
srcDir "src/derpus/headers"
}
}
}
task wrapper(type: Wrapper) {
gradleVersion = '2.3'
}
Ovviamente dovrei essere in grado di eseguire gradle wrapper
per occuparsi del primo elemento. Ma per quanto riguarda la compilazione e la compilazione, in nessun punto dei documenti del plugin C vedo effettivamente un comando o una chiamata di build che esegue effettivamente una compilazione e crea!
Per quanto riguarda il terzo elemento, utilizzando il plug-in Eclipse e invocandolo tramite gradlew eclipse
, mi chiedo se c'è qualcos'altro che devo fare in modo che le configurazioni risultanti del progetto/impostazioni siano compatibili con ciò che il plugin Eclipse CDT si aspetta in ordine di lavorare con i programmi C. Anche se intendo lasciare che Gradle gestisca tutte le mie build, voglio comunque fare tutto il mio sviluppo in Eclipse, e quindi tutte le cose che il CDT include (evidenziazione della sintassi, compilazione, ecc.) Sono importanti per me.
Ha funzionato per me importando prima come progetto Gradle e successivamente aggiungendo la natura C/C++ come menzionato sopra (Eclipse Oxygen/Gradle 4.0). Non scherzare con i file di configurazione! – lazlev