Forum: Mikrocontroller und Digitale Elektronik Leeres VS Code Projekt mit ESP-IDF


von Vorname N. (mcu32)


Lesenswert?

Hallo Zusammen,

könnte mir jemand, der VS Code in Verbindung mit der ESP-IDF Erweiterung 
verwendet bitte mal ein compilierbares Projekt hier rein stellen, in dem 
diese Person eigene Subfolder und Sources/ Headerfiles erstellt hat?

Ich versuche schon seit Tagen in ein Projekt eigene Folder einzubinden 
aber egal was ich tue, es will nicht bauen.

Ich habe die CMakeList angepasst, ich habe den Include Path angepasst. 
Ich habe wirklich alles gemacht, was in der Dokumentation steht. Langsam 
bin ich am verzweifeln...

Ich hatte bisher nicht wirklich mit VS Code zutun, habe aber mit einigen 
gesprochen die zu mir gemeint haben, das die ESP-IDF generell ein Krampf 
sei :/

LG

von J. S. (jojos)


Lesenswert?

So kompliziert finde ich das nicht, man muss sich nur an die vorgegebene 
Struktur mit main und components directories halten und die idf_ Makros 
verwenden.
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html#

von Vorname N. (mcu32)


Lesenswert?

Das habe ich. Ich habe im components ordner einen ordner mit user 
angelegt. In diesem befinden sich Source- sowie Headerfiles. Und das mag 
er garnicht.

von Vincent H. (vinci)


Lesenswert?

Im ESP-IDF gibts einen "examples" Ordner in dem dutzende Projekte drin 
liegen die sich via idf.py build ohne jegliche Änderung compilieren 
lassen.

von Vorname N. (mcu32)


Lesenswert?

Vincent H. schrieb:
> Im ESP-IDF gibts einen "examples" Ordner in dem dutzende Projekte drin
> liegen die sich via idf.py build ohne jegliche Änderung compilieren
> lassen.

Ist mir bewusst, hilft mir aber rein garnicht für mein Problem wenn ich 
eigene Source- und Headerfiles einbinde.
Das Standardkram aus der Lib funktioniert ist ja nicht das Problem.

von Vincent H. (vinci)


Lesenswert?

Ferndiagnose ist schwierig. Lad das Projekt mal wo hoch.

von J. S. (jojos)


Lesenswert?

'es will nicht bauen' ist auch eine etwas unscharfe Fehlermeldung.
Liefert die Cmake Konfiguration den Fehler, oder Compiler oder Linker? 
Struktur und die CMakeLists.txt wären hilfreicher.

von Vorname N. (mcu32)


Lesenswert?

Meine Struktur:
1
MeinProjekt
2
  --build
3
  --components
4
  --main
5
  --user
6
    --src
7
    --inc

Inhalt der CMakeList.txt:
1
# The following five lines of boilerplate have to be in your project's
2
# CMakeLists in this exact order for cmake to work correctly
3
cmake_minimum_required(VERSION 3.16)
4
5
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
6
project(MeinProjekt)
7
8
# Fügen Sie Ihre Header- und Source-Dateien hinzu
9
add_executable(MeinProjekt
10
    user/test.h
11
    user/test.c
12
    )
13
14
# Include-Verzeichnisse festlegen
15
target_include_directories(MeinProjekt PRIVATE
16
    user
17
    )

Der Fehler beim compilieren:

fatal error: user/test.h: No such file or directory

Der code der main.c:
1
#include "user/test.h"
2
3
void app_main(void)
4
{
5
6
test();
7
8
}

Der ORdner user ist ausserdem in C/C++ IntelliSense angegeben.

Der Sourcefile test.c liegt im subfolder src von user, die headerdatei 
test.h in inc.
Und ja, ich habe den Header auch in der Source test.c included.

EDIT:
Die Umgebungsvariable IDF_PATH ist auch richtig gesetzt.

: Bearbeitet durch User
von Vincent H. (vinci)


Lesenswert?

Das ist zwar absolut valides CMake um ein Executable zu basteln, nur 
leider benutzt Espressif CMake nicht, sondern missbraucht es. Du darfst 
jetzt noch all den ganzen Spaß lernen den J.S. oben bereits verlinkt 
hat:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html

Damit bestätigst du genau meine Befürchtungen die ich auf GitHub im 
ESP-IDF Repo bereits in unzähligen Issues geäußert hab. Das ganze 
Buildsystem rund um ESP-IDF ist vollkommen verkorkst und unabhängig 
davon ob man bereits CMake Kentnisse hat oder nicht bekommt man davon 
einfach nur Kopfweh...

Wenn man bisher keine oder kaum CMake Kentnisse hat, dann ist der Spaß 
natürlich doppelt groß. CMake selbst ist ja schon der absolute Horror...

/edit
Ich hab mal in einem Blogeintrag erklärt was das ESP-IDF Zeug im 
Hintergrund eigentlich so treibt: 
https://higaski.at/working-with-or-rather-around-the-esp32-build-system/

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

ja, man sollte sich da an das Korsett von IDF gewöhnen. 
Projektspezifischer Code in das main Verzeichnis, wiederverwendbaren 
Code als Komponenten in Components.
Wenn es ein neues IDF Release gibt können Lösungen die am IDF 
vorbeigehen wieder kaputt sein.

von Vorname N. (mcu32)


Lesenswert?

Ich probiere mich mal an den genannten Vorschlägen.

Ja, ich habe auf der Suche nach einer Lösung schon ziemlich viel Leid in 
den einzelnen Threads zum Thema ESP-IDF gelesen :D

Vielen Dank erstmal.

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.