Forum: Compiler & IDEs Kann mir jemand bei der .bat-File helfen?


von Rubaddl (Gast)


Lesenswert?

Hallo,

ich habe ein Programm für mein qfixSoccerBoard geschrieben, womit ich 
den CMPS03-Kompass auslesen kann. Damit die ganzen Befehle nicht in 
meiner main.cc rumstehen habe ich eine CMPS03.c und eine CMPS03.h 
erstellt und die .h in beiden c-Dateien inkludiert. Leider wird beim 
compile-Programm von qfix eine zweite Datei nicht mit eingeschlossen 
werden und die Funktionen werden dann nicht gefunden. Ich habe aber 
bezüglich .bat-Dateien keine Ahnung und auch keine Lust im Internet 
dazuzulernen. Deswegen wollte ich fragen, ob irgendwer mir in die 
vorgefertigte .bat von qfix das Kompilieren von CMPS03.c reinschreiben 
kann.
1
@echo off
2
set TARGET=%1
3
set CONTROLLER=atmega128
4
5
echo compiling ...
6
avr-c++ -g -O2 -Wall -I"%QFIX_DIR%\avr\include" -mmcu=%CONTROLLER% -o %TARGET%.elf %TARGET%.cc
7
avr-objcopy -j .text -j .data -O binary %TARGET%.elf %TARGET%.bin
8
if exist %TARGET%.$$$ del %TARGET%.$$$
9
if exist %TARGET%.elf del %TARGET%.elf
10
echo OK
Das die Datei universell für alle .cc gilt muss natürlich nicht erhalten 
bleiben. Wahrscheinlich muss man nur an der richtigen Stelle ein 
CMPS03.c einfügen, aber diese richtige Stelle kenne ich nicht.
Wäre echt cool wenn das so einfach wäre!

Rubaddl

von Die Drossel (Gast)


Lesenswert?

Benenne deine cmps03.c in cmps03.cc um.
Ersetz %1 mit CMPS03.c und dann solltet es nur noch diese Datei 
kompilieren. Vorausgestzt alles liegt im gleichen Verzeichnis

von Oliver (Gast)


Lesenswert?

Die Drossel schrieb:
> keine Ahnung und auch keine Lust im Internet
> dazuzulernen.

Tja, was fragste dann hier? Hier ist auch das Internet...

Rubaddl schrieb:
> Wahrscheinlich muss man nur an der richtigen Stelle ein
> CMPS03.c einfügen,

Nein, du musst beide einzeln compilieren, und dann die .o 
zusammenlinken.
Das steht so in deinem batch-file nicht drin.
Übllicherweise macht man so etwas mit makefiles.

Lange Rede, kurzer Sinn: Da das mit dem dazulernen nix für dich ist, 
pack halt doch wieder all den Code in dein main.cc.

Wer schönen Code will, muß lernen.

Oliver

von Peter D. (peda)


Lesenswert?

1
avr-c++ -g -O2 -Wall -I"%QFIX_DIR%\avr\include" -mmcu=%CONTROLLER% -o %TARGET%.elf *.cc

Linkt alle *.cc im angegebenen Verzeichnis.


Peter

von Oliver (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Linkt alle *.cc im angegebenen Verzeichnis.

Nö

Oliver

von Peter D. (peda)


Lesenswert?

Im aktuellen Verzeichnis (wo man die Bat aufruft).


Peter

von Rubaddl (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Im aktuellen Verzeichnis (wo man die Bat aufruft)

Die Dateien sind alle im gleichen Verzeichnis und trotzdem werden die 
ausgelagerten Funktionen nicht gefunden.

Die Drossel schrieb:
> Ersetz %1 mit CMPS03.c und dann solltet es nur noch diese Datei
> kompilieren.

Das tuts dann auch, aber ich wollte ja beide Dateien kompilieren und 
eine .bin erhalten; einzeln klappt das ohne Probleme.

Oliver schrieb:
> Übllicherweise macht man so etwas mit makefiles.

Wie sieht das denn dann aus? Wie krieg ich sowas hin?

von Rubaddl (Gast)


Lesenswert?

Ich habe jetzt einfach die CMPS03.c direkt inkludiert.
Das geht ohne Probleme.
Ich hab zwar irgendwo gelesen, dass man .c, .cpp und .cc-Dateien nicht 
inkludiert, aber weil es klappt...
Danke für die Antworten

Rubaddl

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.