Forum: Mikrocontroller und Digitale Elektronik ESP32 IDF Buildsystem


von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Hallo Interssierte.

ich habe irgendwie Verstaendnissprobleme, was das generelle Aufteilen 
von .c und .h files in Projekten betrifft.

Hier mal ein Beispiel:
1
.
2
├── components
3
│   ├── esp32-ds18b20
4
│   │   ├── component.mk
5
│   │   ├── doc
6
│   │   │   └── Doxyfile
7
│   │   ├── ds18b20.c
8
│   │   ├── include
9
│   │   │   └── ds18b20.h
10
│   │   ├── LICENSE
11
│   │   └── README.md
12
│   ├── esp32-i2c-ssd1306-oled
13
│   │   ├── main
14
│   │   │   ├── component.mk
15
│   │   │   ├── font_glcd_5x7.c
16
│   │   │   ├── fonts.c
17
│   │   │   ├── font_tahoma_8pt.c
18
│   │   │   ├── i2c.c
19
│   │   │   ├── include
20
│   │   │   │   ├── fonts.h
21
│   │   │   │   ├── i2c.h
22
│   │   │   │   └── ssd1306.h
23
│   │   │   ├── main.c
24
│   │   │   ├── main.c.dist
25
│   │   │   └── ssd1306_i2c.c
26
│   │   ├── Makefile
27
│   │   ├── README.md
28
│   │   └── sdkconfig
29
│   └── esp32-owb
30
│       ├── component.mk
31
│       ├── doc
32
│       │   └── Doxyfile
33
│       ├── include
34
│       │   ├── owb_gpio.h
35
│       │   ├── owb.h
36
│       │   └── owb_rmt.h
37
│       ├── LICENSE
38
│       ├── owb.c
39
│       ├── owb_gpio.c
40
│       ├── owb_rmt.c
41
│       └── README.md
42
├── main
43
│   ├── component.mk
44
│   ├── main.c
45
│   └── wifi.c
46
├── Makefile
47
├── README.md
48
└── sdkconfig

Im Project Root liegt die [sdkconfig] und ein [makefile], soweit klar.
Im main liegt mein eigentliches Programm [main.c], die Wifi-Fuktionen 
habe ich schon in ein extra File ausgelagert [wifi.c].

Unter [components] habe ich mir nun verschiedene ?Librarys? 
zusammengeklaut und abgelegt.

Mir ist nun nicht klar, wie ich in/aus [main.c] oder [wifi.c] die 
Funktionen in den ?Librarys? unter [components] zugreiffen kann.

Was mir auch nicht klar ist, wenn ich im [main.c] #include einbinde, ich 
das in [wifi.c] auch nochmal machen muss??

[main.c]
1
#include "freertos/FreeRTOS.h"
2
#include "freertos/event_groups.h"
3
#include "freertos/task.h"

[wifi.c]
1
#include "freertos/FreeRTOS.h"
2
#include "freertos/event_groups.h"
3
#include "freertos/task.h"
4
5
#include "esp_wifi.h"
6
#include "esp_event_loop.h"
7
8
#include "lwip/err.h"
9
#include "lwip/sockets.h"
10
#include "lwip/sys.h"
11
#include "lwip/netdb.h"
12
#include "lwip/dns.h"

ich wollte in [wifi.c] nur [freertos/event_groups.h] einbinden, weil ich 
das nur dort brauche, das mault der Compiler aber an ... ich muesse 
[freertos/event_groups.h] vorher einbinden. Was ich ja schon in [main.c] 
getan habe.

Ja, Fragen Fragen.

: Bearbeitet durch User
von Christopher J. (christopher_j23)


Lesenswert?

Das Problem was ich bei dir sehe ist, dass du unter "./components" neben 
zwei "Libraries", d.h. esp32-ds18b20 und esp32-owb (welche da auch 
hingehören), noch zusätzlich ein komplettes Beispielprojekt hast 
(esp32-i2c-ssd1306-oled). Deswegen hast du auch in deinem tree zweimal 
"main.c".

Das komplette Buildsystem für den ESP32 ist hier eigentlich ganz gut 
beschrieben:
https://esp-idf.readthedocs.io/en/latest/api-guides/build-system.html

von Marco H. (damarco)


Lesenswert?

das funktioniert so nicht du mußt sie im makfile mit einbinden das 
funktioniert über die component.mk, wie steht hier drin -> 
https://leanpub.com/kolban-ESP32

sonst gibt es ein Problem mit dem linken des Projekts. Denn dein main.c 
ist nicht das wirkliche main.c und des taucht dann zweimal auf.

: Bearbeitet durch User
von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Christopher J. schrieb:
> Das Problem was ich bei dir sehe ist, dass du unter "./components" neben
> zwei "Libraries", d.h. esp32-ds18b20 und esp32-owb (welche da auch
> hingehören), noch zusätzlich ein komplettes Beispielprojekt hast
> (esp32-i2c-ssd1306-oled). Deswegen hast du auch in deinem tree zweimal
> "main.c".

Danke! Juter Hinweis!

von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Marco H. schrieb:
> das funktioniert so nicht du mußt sie im makfile mit einbinden das
> funktioniert über die component.mk, wie steht hier drin ->
> https://leanpub.com/kolban-ESP32

Hi Marco, bin ich auch schon drueber gestolpert, lohnt das?

von Marco H. (damarco)


Lesenswert?

Ohje gut das du noch nicht festgestellt hast das man den Preis auch auf 
Null stellen kann ;) Ja lohnt sich da das eine Spende ist und das Buch 
ist an sich sehr gut. Es gibt auch dauernd Updates, also es bleibt 
aktuell.

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.