Forum: Compiler & IDEs Arbeitsverzeichnis zum Kompilieren per Präprozessor einsetzbar?


von Schmidt (Gast)


Lesenswert?

Hallo,

ich habe hier vor mir gerade ein Projekt für mehrere Atmegas, die über 
einen Bus kommunizieren sollen. Das bedeutet, dass ich für jeden Atmega 
ein eigenständiges Programm warten muss.

Diese Wartung muss wahlweise auf zwei unterschiedlichen Windows und 
einem Linuxrechner erfolgen können.

Nun besteht das Problem, dass sich die Arbeitsverzeichnisse bei jedem 
Rechner ändern können und es sehr mühseelig ist, bei jedem 
Rechnerwechsel zunächst in allen Programmteilen die includes mit dem 
richtigen Verzeichnis zu versehen.

Gibt es eine Möglichkeit, dieses über den Präprozessor abwickeln zu 
lassen nach der Art:

#define WINDOWSRECHNER
//#define LIUXRECHNER

#ifdef WINDOWSRECHNER
 #define VERZEICHNIS C:/PROGRAMMIERUNG/PROJEKTabc
#endif

#ifdef LINUXRECHNER
 #define VERZEICHNIS /home/PROGRAMMIERUNG/PROJEKabc
#endif

...

Und dann in jeder Unterdatei:

...
#include "VERZEICHNIS/unterprogramm1.c"
#include "VERZEICHNIS/unterprogramm2.c"

...

So funktioniert es nicht, aber vielleicht weiß einer von euch einen Rat.

Mit Gruß

Schmidt

von Peter II (Gast)


Lesenswert?

Schmidt schrieb:
> So funktioniert es nicht, aber vielleicht weiß einer von euch einen Rat.

einfach immer relative Verzeichnisse verwenden und keine Absoluten. Dann 
klappt das überall.

von Peter II (Gast)


Lesenswert?

Nachtrag:

#include "VERZEICHNIS/unterprogramm1.c"


man includiert keine *.c Dateien.

Arbeite mit einem Makefile und relativen Verzeichnisse und es 
funktioniert auf beiden Systemen.

von Schmidt (Gast)


Lesenswert?

Vielen Dank,

da habe ich vor Bäumen den Wald nicht gesehen.

Ja, ich arbeite z.Zt. unter Windows mit AVR-Stuio und binde die 
Unterroutinen über #include ein, da alles noch sehr alpha ist. So kann 
ich zum Debuggen schnell einzelne Programmgruppen entfernen oder 
einbinden.

Künftig bietet sich eine zentrale Datei an (Makefile).

Mit Gruß und Dank

Schmidt

von Peter D. (peda)


Lesenswert?

Mit dem Schalter -I kannst Du dem Make weitere Suchpfade hinzufügen, 
z.B.:
1
-I../../CommonInclude

Und der Aufruf im C-File:
1
#include <libcommon.h>

von Bernd K. (prof7bit)


Lesenswert?

Schmidt schrieb:
> Unterroutinen über #include ein, da alles noch sehr alpha ist. So kann
> ich zum Debuggen schnell einzelne Programmgruppen entfernen oder
> einbinden.

Das macht man effektiver mit ifdefs

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.