Forum: Compiler & IDEs Problem mit Include


von Markus (Gast)


Lesenswert?

Hi,
ich hab grad ein (sicher banales) Problem mit Include. Ich hab mir ne
kleine Lib bestehend aus einem *.c und einem *.h file gebastelt.
Solange beides zusammen mit dem main file in einem Ordner war ging es
prima, aber jetzt würde ich es gern in ein eingenes Verzeichnis packen
und jetzt bekomm ich folgende Fehlermeldung:

make: *** No rule to make target `../usart.c', needed by `usart.o'.
Stop.

Ich könnte auch den gesamten Code in die usart.h Datei packen, aber das
will ich nicht unbedingt. Wie muß ich da jetzt vorgehen?

Ich verwende WinAVR zusammen mit dem AVR Studio

Gruß
Markus

von The Daz (Gast)


Lesenswert?

Wenn du schon eine lib hast (sprich irgendwas mit .a oder .so am Ende),
wozu brauchst du dann noch usart.o in deinem prog ? Du brauchst dort
doch nur die header file und dann musst du dem compiler mit der -I
option sagen, wo er danach suchen soll.

von Markus (Gast)


Lesenswert?

Ich hab keine fertig compilierte Lib. Ich hab ein *.c und ein *.h File
an dem ich grad arbeite und auch compilieren muß. Und da kommt besagte
Fehlermeldung.

Ich hab auch schon den Library- und Include-Pfad entsprechend gesetzt.
Aber irgendwas muß wohl noch fehlen.

Und wie gesagt, ich arbeite mit dem AVR Studio

von The Daz (Gast)


Lesenswert?

Haeng mal dein makefile an und beschreibe deine directory Struktur

von Markus (Gast)


Lesenswert?

AVR Studio, kein makefile

von The Daz (Gast)


Lesenswert?

Sorry, hast du ja eingangs schon erwaehnt. Da bin ich dann ueberfragt.
Ich benutze bisher nur die Kommando-Zeile.

von Markus (Gast)


Lesenswert?

naja, wie macht man es denn normal bei der Kommandozeile? Das AVR Studio
macht ja letztendlich auch nichts anderes.

Ich hab mir ein Verzeichnis für meine eigenen Libs angelegt
c:\WinAVR\avr\include\mylib\

Darin befindet sich die usart.c und usart.h. Der Main Sourcecode ist in
einem eigenen Projektverzeichnis. Was mußt du sonst noch wissen?

von Markus (Gast)


Lesenswert?

Ach ja, man kann für jedes File, also auch für usart.c, "Custom
Compilation Option" angeben. Ich nehme mal an das da noch irgendwelche
Angaben gemacht werden können/müssen.

hier mal die komplette Ausgabe vom Compiliervorgang. Ich hoffe man
kann's nachher noch lesen

avr-gcc -I"C:\WinAVR\avr\include\mylib"  -mmcu=atmega32 -Wall
-gdwarf-2
-DF_CPU=14745600  -Os -fsigned-char
-Wp,-M,-MP,-MT,Robo32.o,-MF,dep/Robo32.o.d  -c  ../Robo32.c
avr-gcc -I"C:\WinAVR\avr\include\mylib"  -mmcu=atmega32 -Wall
-gdwarf-2
-DF_CPU=14745600  -Os -fsigned-char
-Wp,-M,-MP,-MT,porttools.o,-MF,dep/porttools.o.d  -c  ../porttools.c
make: *** No rule to make target
`..//C/WinAVR/avr/include/mylib/usart.c', needed by `usart.o'.  Stop.

von The Daz (Gast)


Lesenswert?

Habs mal bei mir versucht und es hat auf Anhieb geklappt. Ich habe die
source im subdirectory als zusaetzliche source hinzugefuegt und bei den
options das subdir als include path hinzugefuegt. Damit wurde die source
im Haupt- und Unterverzeichnis automatisch kompiliert.

von The Daz (Gast)


Lesenswert?

Als ich versucht habe, den output in ein eigenes subdir zu verlagern,
habe ich allerdings sofort das gleiche Problem bekommen. Fazit : output
dorthin leiten, wo dein Haupt-Sourcefile liegt.

von Markus (Gast)


Lesenswert?

also so:

Main Source: Project Folder
Lib Source: Lib Folder

Main Output: Project Folder
Lib Output: Project Folder

So weit, so gut. Wie macht man das an der Kommandozeile? Davon kann ich
denke ich die nötigen Einstellungen für das AVR Studio ableiten.
Makefile Angaben helfen glaub ich nur bedingt. Ich kämpf mich grad
durch die Kommandozeilenparameter und raff nix

von The Daz (Gast)


Lesenswert?

Nicht ganz. Wenn man den project folder fuer den output waehlt, werden
alle .o files dort generiert, auch dein 'library' code. Auf der
command line ruft man nur 'make' auf und braucht dazu natuerlich ein
Makefile. Das wird uebrigens auch vom AVRStudio im output folder
generiert. Wenn es nicht tut, dann kann man es auch direkt in einem
Editor aendern.

von Markus (Gast)


Angehängte Dateien:

Lesenswert?

Sag das doch gleich ;)
Vielleicht kannste mir damit mehr sagen (siehe Anhang)

von Markus (Gast)


Lesenswert?

Hm, hab glaub ich die Ursache. Die komische Pfadangaben. Hab mal einen
korrekten Pfad eingegeben und das Makefile direkt verwendet, dann
gings.
Mal rausfinden wieso der da so nen dämlichen Pfad einbaut

von The Daz (Gast)


Lesenswert?

Hmm. Versuch mal die beiden Punkte vor //C/WinAvr mit nem Editor zu
loeschen und im subdir des Makefiles make auf der command line
aufzurufen.

von Markus (Gast)


Lesenswert?

Ich hab den kompletten Pfad mal auf standard DOS umgeändert und dann
statt den AVR Studio eigenen Parametern mal das Makefile direkt
angegeben. Dann geht es klaglos.

Aber das ist halt keine zufriedenstellende Lösung, höchstens ne
vorübergehende. Man müsste rausfinden wieso das AVR Studio so nen
komischen Pfad erzeugt bzw ob man irgendwas anderes einstellen muß
damit der stimmt

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.