Skocz do zawartości

esp idf cmakelists tworzenie zależnośći


_LM_

Pomocna odpowiedź

Nie umiem sobie poradzić z utworzeniem pliku cmake kiedy biblioteka potrzebuje funkcji z innej biblioteki. Oto struktura plików 
javaw_SghEkJUCb8.thumb.png.0531d228b90de8f23cdd2b733042ddec.png

Chodzi o to aby w pliku bmp.c były widoczne funkcje z komponentu I2C 
 

idf_component_register(SRCS "bmp280.c" "i2c_drv.c"
                      INCLUDE_DIRS "include")

Póki co coś takiego wymodziłem.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Poprawiłem na 

idf_component_register(SRCS "bmp280.c"
                      INCLUDE_DIRS "include" ".")
 set(COMPONENT_REQUIRES "I2C")

jednak nadal 
 

FAILED: esp-idf/bmp280/CMakeFiles/__idf_bmp280.dir/bmp280.c.obj 
ccache C:\Espressif2\tools\xtensa-esp32-elf\esp-2021r2-patch5-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-gcc.exe  -IC:/Espressif2/workspace/weather_station/build/config -IC:/Espressif2/workspace/weather_station/components/bmp280/include -IC:/Espressif2/workspace/weather_station/components/bmp280 -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/newlib/platform_include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/freertos/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/freertos/include/esp_additions/freertos -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/freertos/port/xtensa/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/freertos/include/esp_additions -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_hw_support/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_hw_support/include/soc -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_hw_support/include/soc/esp32 -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_hw_support/port/esp32/. -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_hw_support/port/esp32/private_include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/heap/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/log/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/lwip/include/apps -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/lwip/include/apps/sntp -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/lwip/lwip/src/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/lwip/port/esp32/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/lwip/port/esp32/include/arch -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/soc/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/soc/esp32/. -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/soc/esp32/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/hal/esp32/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/hal/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/hal/platform_port/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_rom/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_rom/include/esp32 -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_rom/esp32 -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_common/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_system/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_system/port/soc -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_system/port/public_compat -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp32/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/xtensa/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/xtensa/esp32/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/driver/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/driver/esp32/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_pm/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_ringbuf/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/efuse/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/efuse/esp32/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/vfs/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_wifi/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_event/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_netif/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_eth/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/tcpip_adapter/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_phy/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_phy/esp32/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_ipc/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/app_trace/include -IC:/Espressif2/frameworks/esp-idf-v4.4.4/components/esp_timer/include -mlongcalls -Wno-frame-address  -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -ggdb -Og -fmacro-prefix-map=C:/Espressif2/workspace/weather_station=. -fmacro-prefix-map=C:/Espressif2/frameworks/esp-idf-v4.4.4=IDF -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -std=gnu99 -Wno-old-style-declaration -D_GNU_SOURCE -DIDF_VER=\"v4.4.4-dirty\" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS -MD -MT esp-idf/bmp280/CMakeFiles/__idf_bmp280.dir/bmp280.c.obj -MF esp-idf\bmp280\CMakeFiles\__idf_bmp280.dir\bmp280.c.obj.d -o esp-idf/bmp280/CMakeFiles/__idf_bmp280.dir/bmp280.c.obj -c C:/Espressif2/workspace/weather_station/components/bmp280/bmp280.c
C:/Espressif2/workspace/weather_station/components/bmp280/bmp280.c:7:10: fatal error: i2c_drv.h: No such file or directory
 #include "i2c_drv.h"
          ^~~~~~~~~~~
compilation terminated.

Czemu nie widzi tego pliku? 

Edytowano przez _LM_
Link do komentarza
Share on other sites

Daje mi w kość ten cmakelists, ale znalazłem odpowiednie ustawienie:
 

idf_component_register(SRCS "bmp280.c"
                      INCLUDE_DIRS "include"
                      REQUIRES I2C
                     )
 set(COMPONENT_REQUIRES I2C)

 

Link do komentarza
Share on other sites

@_LM_ to jest dość zagmatwane, ilekroć siadam do tematu zawsze mam z tym problem, zwłaszcza że inaczej traktujesz dodanie pliku, inaczej komponentu a inaczej biblioteki ze zdanego repo. Pomiędzy wersjami niektóre komponenty trafiły do tego repo np diody programowalne.

image.thumb.png.96929c223655d67641c8d37437695a02.png

idf_component_register(SRCS "cmd_scheduler.c" "on_cmd.c"
                    INCLUDE_DIRS "include/"
                    REQUIRES general connectivity mqtt json)

W REQUIRES podajesz nazwę katalogu. Jeżeli twoja biblioteka jest w zdalnym repo Espressifa, to możesz dodać plik idf_component.yml równolegle z cmake, doda wtedy katalog managed_components i tam pobierze co trzeba. Wewnątrz pliku robisz np tak:

dependencies:
  espressif/led_strip: "^2.0.0"

 

  • Lubię! 2
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@_LM_  Jak robiłem do tego pierwsze podejścia to patrzyłem na dokumentację platformio, jest ona bardziej zjadliwa. Jak podejrzysz kod konpnentu, to jest jeszcze opcja dodania pliku konfiguracyjnego.

57 minut temu, _LM_ napisał:

Z której wersji IDF korzystasz?

Pierwsze podejście robiłem z wersją 4.4 i Espressif IDE. Później Migracja na VS Code głównie żeby mieć pod ręką testy jednostkowe i przy okazji wejście w wersję 5, co okazało się trochę problmatyczne właśnie przez zmianę komonentów z bibliotek frameworku na zdalne repo.

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.