Forum: Compiler & IDEs AVR-Studio mit GCC, Projekt aufteilen


von sasa (Gast)


Lesenswert?

Hallo,
ich möchte mein Projekt in mehere .c-Files aufteilen, damit es 
übersichtlicher wird.

Wie kann ich Avr-Studio dazu bringen nur die main.c Datei zu compilieren 
und alle anderen .h und .c nur includieren?

Unter Netbeans kann man dazu  jeder Datei "exclude from build" 
aktivieren.
Bei Studio habe unterschiedliche AVRGCC-Schalter unter Projekt Options 
ausprobiert, ohne Erfolg.

von Karl H. (kbuchegg)


Lesenswert?

sasa schrieb:
> Hallo,
> ich möchte mein Projekt in mehere .c-Files aufteilen, damit es
> übersichtlicher wird.
>
> Wie kann ich Avr-Studio dazu bringen nur die main.c Datei zu compilieren
> und alle anderen .h und .c nur includieren?

Das willst du gar nicht.
Du willst haben, dass jedes einzelne *.c welches zum Projekt gehört, 
compiliert wird.

Diese Einzelteile werden danach zum kompletten Programm zusammengelinkt.

http://www.mikrocontroller.net/articles/FAQ#Ich_hab_da_mehrere_.2A.c_und_.2A.h_Dateien._Was_mache_ich_damit.3F

von sasa (Gast)


Lesenswert?

Danke,

jetzt funktioniert es wie in der FAQ. Ich muss dann aber bei jeder .c 
Datei alle Bibliotheken includieren wie z.B: <inttypes.h>,<avr/io.h>, 
<avr/interrupt.h> ...

Früher habe ich in der Haupdatei
>   #include teil-modul.c
geschrieben und mit z.B.
>   gcc hauptdatei.c -o start.exe
oder mit Netbeans übersetzt, man kann dan die Bibliotheken nur in der 
Hauptdatei definieren.

von Oliver (Gast)


Lesenswert?

>Früher habe ich in der Haupdatei
>>   #include teil-modul.c
>geschrieben...

Das ist das schöne an C, es zwingt einen nicht zu etwas, was man nicht 
will, auch nicht zum sauberen Programmieren.

Oliver

von Karl H. (kbuchegg)


Lesenswert?

sasa schrieb:
> Danke,
>
> jetzt funktioniert es wie in der FAQ. Ich muss dann aber bei jeder .c
> Datei alle Bibliotheken includieren wie z.B: <inttypes.h>,<avr/io.h>,
> <avr/interrupt.h> ...

(Das sind keine Bibliotheken. Das sind ganz normale Include-Files die 
einfach nur Text enthalten. Eine Bibliothek ist etwas anderes und hat 
einen anderen Zweck)

Eines der wichtigen Dinge in C ist es, dass jede *.c die zum Projekt 
gehört, für sich alleine, unabhängig von allen anderen compiliert werden 
kann. Und ja, damit das möglich ist, muss jede einzelne *.c all das 
includen, was sie benötigt.

von sasa (Gast)


Lesenswert?

Danke,
ich werde mein Projekt-Aufbau entsprechend verändern.

von Olaf D. (Firma: O.D.I.S.) (dreyero)


Lesenswert?

Hallo Sasa,

man nimmt mehrere Files um nur die neu zu übersetzen, die sich geändert 
haben. Das Tool das sich damit prächtig auskennt heisst "make".
Wem das zu kryptisch ist, der kann eine IDE wie AVR-Studio, Eclipse, 
VisualStudio (würg) nehmen ...

Gruß

Olaf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.