Hallo! Hoffe ich bin hier im richtigen Forum, weil es geht nicht um GCC, sondern um IAR Embedded Workbench for MSP430 4.20.1 (4.20.1.50017). Wusste aber nicht, in welches Forum es besser passen würde. Also, ich hab folgendes Problem: In IAR schreibe ich gerade meine Firmware. Um die Übersicht ein wenig zu wahren, habe ich meine "Funktionsblöcke" in eigene Projekte gepackt. Das Projekt mit der main.c ist mein "aktives Projekt" Nun habe ich haber folgende Probleme: * Wenn "Rebuild All" mache, wird nur das aktive Projekt kompiliert. Frage: Ist es möglich irgendwo einzustellen, dass er alle kompiliert? * Kompiliere ich die anderen Projekte manuell Der Linker kann Funktionen aus einem c-File eines anderen Projekts nicht öffnen (habe diese über das inkludieren des entsprechenden h-files, in dem die Funktionen mit "extern" deklariert sind, gemacht) Frage: Was muss ich wo einstellen, dass alle Projekte zusammen ein Output-File ergeben? Vielen Dank für eure Hilfe Gruß Marco
Kann es sei, dass du da was verwechselst? Ein Projekt ist üblicherweise die Sammlung aller *.c und *.h Files, die zusammengenommen ein komplettes Programm (oder Object-Library) ergeben. Die Aufteilung eines C-Sourc Codes in mehrere *.c bzw *.h Files ist NICHT gleichbedeutend mit mehreren Projekten. Das ist immer noch 1 Projekt. Nur sind dann eben mehrere *.c bzw *.h Files Teil des Projektes.
Hallo! Karl heinz Buchegger schrieb: > Ein Projekt ist üblicherweise die Sammlung aller *.c und *.h Files, die > zusammengenommen ein komplettes Programm (oder Object-Library) ergeben. Das sehe ich auch so. Des Wegen fasse ich ja auch z.B. alles was die DMA betrifft in ein Projekt zusammen, so dass ich eine Bibliothek erhalte, die ich/man später in anderen Projekten wiederverwenden kann. Die Frag ist nur, wie ich das ERgebnis von Projekt A in Projekt B verwenden kann... Karl heinz Buchegger schrieb: > Die Aufteilung eines C-Sourc Codes in mehrere *.c bzw *.h Files ist > NICHT gleichbedeutend mit mehreren Projekten. Das ist immer noch 1 > Projekt. Nur sind dann eben mehrere *.c bzw *.h Files Teil des > Projektes. Ist auch logisch. Aber das ist ja nicht mein Problem.... Nun zu meinen ursprünglichen Fragestellungen: Inzwischen habe ich heraus gefunden, dass man mit dem sogenannten "Batch build" alle Projekte in einem Rutsch kompilieren kann. Was mir also noch fehlt, ist die bereits eben genannte Frage: Wie kann man das Ergebnis eines Projekts in einem anderen Projekt (des selben Workspaces) verwenden, so dass man das der Linker auch die entsprechenden Funktionen findet...?!? Gruß Marco
Hallo noch mal! Evtl. noch ein paar ergänzende Hinweise: Workspace besteht exemplarisch aus drei Projekten * Projekt A * Projekt B * Projekt C A ist das aktive Projekt und verwendet Funktionen von den Projekten B & C. A wird als Executable kompiliert, B & C als Library. In den Linker-Optionen von Projekt A wird das Output-Verzeichnis der Projekte B & C inkludiert. In den jeweiligen Output-Files von B & C befinden sich auch die kompilierten Libs mit der Endung *.r43. Bei den ausgegebenen Parametern des Linkers werden die Output-Pfade von B &C als relativer Pfad korrekt angezeigt. Dennoch geht es nicht... Gruß Marco
Marco schrieb: > In den Linker-Optionen von Projekt A wird das Output-Verzeichnis der > Projekte B & C inkludiert. Das wird nicht reichen. Du musst auch die Libraries zum A-Programm dazulinken Pfadangaben sind normalerweise einfach nur Hinweise an das jeweilige Werkzeug: Wenn du etwas suchst, dann könntest du es hier und hier finden. Aber in erster Linie musst du dem Linker auch angeben, dass die entsprechenden Librariers mit dazu gehören, wenn A fertig gelinkt werden soll. Der Linker holt sich ja nicht einfach alle Libraries, die er irgendwo findet und linkt sie auf Verdacht mit ein.
Hallo Marco, wie Karl es schon gesagt hat, musst Du die Libraries B & C ins Hauptprogramm verlinkt werden. Anleitung: 1) Auf das Projektfenster A, das wie ein blaues Kästchen aussieht, mit einem Rechtsklick auf "Add" -> "Add files" -> Dateifilter - neben dem Öffnen-Button - auf "Library/Objetc Files" klicken -> die Libraries B & C einfügen. Da es einen Debug und Normalmodus gibt, muss also die Prozedur in beiden Modi durchgeführt werden. MfG IsobarX
Hi Marco, ich bin auch gerade dabei eine lib und eine app unter iar zu schreiben. Ist es bei dir eigentlich auch so, dass beim debuggen der IAR durch die Lib steppt? sollten die lokalen funktionen nicht unsichtbar bleiben?
Hallo! Vielen Dank für eure Antworten. Hab noch eine Möglichkeit gefunden, meine Libs hinzuzufügen. Mein Hinzufügen zum Linker-Command war leider nicht korrekt. Unter den Projekt-"Optionen" => "Linker" => "Extra Options" kann dann pro Zeile die Bibliothek eingebunden werden, die dann z.B. so aussieht: $PROJ_DIR$\..\XY\Debug\Exe\XY.r43 @noob: Ja, ist bei mir auch so. Weiß jetzt aber nicht, ob es daran liegt, das bei mir alles in einem Workspace liegt. Aber ich sehe das nicht als Fehler, sondern nur als Vorteil, weil meine Libs muss ich ja auch debuggen... ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.