Hi! wie stelle ich es an, viele unkompilierte Dateien aus einem übergeordneten Ordner eizubinden. Also ich möchte nicht jede .c Datei einzeln angeben. Ich habe z.B einen Ordner namens USB, der nicht im Projektverzeichnis liegt, mit 20 .c Dateien. Diese sollen einzeln kompiliert und dazugelinkt werden. danke!!
Alexander wrote: > Hi! > wie stelle ich es an, viele unkompilierte Dateien > aus einem übergeordneten Ordner eizubinden. > Also ich möchte nicht jede .c Datei einzeln angeben. > Ich habe z.B einen Ordner namens USB, der nicht im Projektverzeichnis > liegt, mit 20 .c Dateien. Diese sollen einzeln kompiliert und > dazugelinkt werden. Der einfachste Weg dürfte wohl darin liegen, diese 20 *.c Dateien einzeln zu kompilieren und die entstehenden *.o in eine Library zu stellen und dann in deinen eigentlichen Projekten einfach nur diese Library einzulinken. Dazu brauchst du den 'Librarian'. Im gcc-Packet heist der 'ar' (wie archiv) Beschreibung von ar findest du im Web. Zb http://www.gnu.org/software/binutils/manual/html_chapter/binutils_1.html
Das hängt etwas vom verwendeten Make Programm ab. Weiter hängt es davon ab, ob immer pauschal alle Dateien compiliert werden sollen, oder nur die benötigten. Ich nehme mal GNU make an. Wenn es nur die benötigten sein sollen, setze VPATH so, dass er das Verzeichnis mit dem Sourcecode enthält. Wenn es immer alle C-Dateien in dem Verzeichnis sein sollen, dann bieten sich Wildcards an:
1 | MORE_SRCS = $(wildcard dir/*.c) |
2 | MORE_OBJS = $(MORE_SRCS:.c=.o) |
MORE_OBJS sollte dann noch irgendwo als Voraussetzung für das endgültige Target deklariert werden.
Alexander wrote: > Hi! > wie stelle ich es an, viele unkompilierte Dateien > aus einem übergeordneten Ordner eizubinden. Schau mal nach der Beschreibung von vpath bzw. VPATH. Damit kannst du make mitteilen wo es nach zusätzlichen Source- oder Header-Dateien suchen soll.
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.