Hallo,
ich wollte mich von eclipse lösen, hauptsächlich da mir die leichtgewichtigen Editoren wie z.B. adobe/brackets doch besser gefallen.
Ich nutzte jetzt ATOM von GitHub.
Da ich die C++ Projekte jetzt so nicht mehr per Klick anschmeißen kann, versuche ich make zu lernen.
Am liebsten hätte ich jetzt gerne einmal ein vernünftiges Template, dass man dann auf im Prinzip jedes Projekt übertragen kann, sofern dass denn geht.
Mein Testprogramm dafür ist so aufgebaut:
|
Quellcode
|
1
2
3
4
5
6
|
+ src
- main.cpp
- test.h
- test.cpp
- Makefile
- readme
|
So, alles in src soll natürlich compiliert und gelinkt werden.
Das klappt auch, ich lese alle *.cpp Dateien mit $(shell find -name '*.cpp') ein, so dass ich also dafür schon mal nichts ins Makefile schreiben muss.
Die Ausgabe ist allerdings komisch. Ich habe 2 Optionen definiert (Variablen), die einmal einen Ausgabeordner und den Namen der Binärdatei angeben.
Die Binärdatei ist dann da und läuft. Aber die ganzen Objektdateien fehlen.
Hier mal das Makefile:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# compiler settings
CC = g++
CFLAGS =
LDFLAGS =
# output settings
BIN = test
OUT = out
OBJ = $(shell find -name '*.cpp')
# --- DO NOT EDIT BELOW ---
all: $(OBJ); \
mkdir -p $(OUT) && \
$(CC) $(CFLAGS) $(OBJ) -o $(OUT)/$(BIN) $(LDFLAGS)
*.o: *.cpp; \
$(CC) -c $<
run: all; \
./$(OUT)/$(BIN)
clean: ; \
rm -rf $(OUT)
|
Wohin verschwinden die? Ich hab die ganze Platte durchsucht, einfach weg.
Am besten wäre es wenn im Grunde die Ordnerstruktur von src übernommen wird, und dann entsprechend die .o Dateien dort eingefügt werden. Passend zu den cpp Dateien eben.
Und dann noch die Frage zu Abhängigkeiten. Muss ich irgendwas beachten wenn ich Bibliotheken verwende? Es sollte doch eigentlich reichen die an den Linker zu hängen (hier LDFLAGS).
Ich habe häufiger gesehen dass irgendwelche includes dort noch definiert wurden... aber verstanden habe ich das nicht.
[Edit]
Ah ich seh gerade, ich habe ja in OBJ nur cpp Dateien... ist das schlimm?