Problem mit Include

Gast #284357
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
Gast #284358
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.
Gast #284359
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
Gast #284363
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?
Gast #284364
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.
Gast #284365
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.
Gast #284367
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
Gast #284368
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.
Gast #284370
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
Gast #284372
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.