• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

probleme mit makefile

Hallo zusammen,

ich muss ein programm schreiben in dem mehere Klassen zu einer einzigen executable comiliert werden. Dies will ich mit einer einigen makefile erreichen. Weiterhin will ich diese makefile nur mit "make" und keinem weitern Parameter aufrufen.
Das ganze sieht im augenblick ungefaehr so aus
Code:
all: zielfile //hat den gleichen namen wie quellfile1.class

zielfile: quellfile1.o quellfile2.o
gcj compilere das ganze

quellfile1.o: quellfile1.class
gcj vorcompilieren

quellfile2.0: quellfile2.class
gcj vorcompilieren

Das dumme ist nur dass wenn ich bloss make eingebe nur quellfile1 compilert wird weil die dem "all" statement entspricht.
Ich will also eine makefile die einfach alles macht was dransteht.

Kann mir einer von euch helfen?

gruesse,
Stefan
 
ne, ist kein copy&paste.
Hab leider von der linux maschine keinen Zugang zum netz,
deshalb schreib ich immer nur sinngemaess was ich meine.
 

snaewe

Hacker
Zeig mal das 'echte' Makefile und die Ausgabe von 'make -d'.
Sonst wird's schwer, dir zu helfen.

EDIT: Ausgabe von 'make' (ohne '-d') reicht erstmal.

Stefan
 
hi,

hab das oben genante problem hinbekommen. Dafuer steh ich jetzt vor einem anderen Problem, eher gesagt vor 2.

Problem 1:
Ich moechte in meiner makefile wildcards verwenden.
Also sowas wie
"kopiliere alle dateien der Form *.c"
das geht leider icht mit
Code:
gcc -c *.c //pseudo code
Ich hab ja keine Ahnung, aber es waere schick wenn ich z.b
"ls *.c"
machen koennte und die ergebnisse in einem array abspeichere welches ich dann via "for schleife" in meinem gcc Befehl verarbeiten kann.

Problem 2:
Ist glaub ich recht trivial. Ich will das argument abfragen mit dem der user "make" eingibt.
Also wenn der user dann z.B. "make dieFile" will ich den string "dieFile" per FILE=eingebenerString zuweisen.

Ist sowas moeglich?

Vielen Dank,
Stefan
 

snaewe

Hacker
Zu 1:
Code:
ARRAY := $(wildcard *.c)

Zu 2: Hängt davon ab, ob du nur eine gewisse Menge an Strings zulassen willst. Wenn ja:
Code:
STRING1:
     FILE=STRING1

STRING2:
    FILE=STRING2

Wenn nein, d.h. es sollen beliebige Strings eingegeben werden können, würde ich
Code:
make CMD=STRING
machen. $(CMD) kann man dann im Makefile benutzen.

Sag genauer, was du vorhast, dann kann man dir vielleicht helfen.

Stefan
 
Danke schoen, das ist genau was ich wollte. Wusste bloss nicht dass ich das FELD schon mit dem make aufruf fuellen kann.

gruss,
Stefan
 
Oben