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
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#
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.
Im ESP-IDF gibts einen "examples" Ordner in dem dutzende Projekte drin liegen die sich via idf.py build ohne jegliche Änderung compilieren lassen.
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.
'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.
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.