Forum: Compiler & IDEs makefile - eigene Libs einbinden


von Alexander (Gast)


Lesenswert?

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!!

von Karl H. (kbuchegg)


Lesenswert?

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

von Norgan (Gast)


Lesenswert?

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.

von Günter -. (guenter)


Lesenswert?

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.

von Alexander (Gast)


Lesenswert?

Ok, danke!
werde es mal testen.
mfg

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.