
Od kiedy pamiętam do pracy z YOCTO zawsze używałem terminala.
Modyfikowanie recept, szukanie różnych rzeczy, odpalanie build’ów z bitabake itp.
Ale poza tym lubię też korzystać z VS Code, szczególnie gdy mam więcej do napisania np. przy modyfikowania kodu źródłowego.
Wypadałoby obie te rzeczy połączyć.
Przez długi czas nie było dobrej nakładki, czyli extension do VS Code dla Yocto, ale jakiś czas temu się to zmieniło i jest oficjalna nakładka.
W związku z tym postanowiłem w końcu się za nią zabrać, skonfigurować i zobaczyć czy sprawdza się z moim stylem pracy.
Setup
Co potrzebujemy:
Host: Dowolne distro Linuxa (pracuję na Ubuntu).
Edytor: Zainstalowany VS Code.
Projekt: Środowisko Yocto (np. Poky z Mega-Manual Quick Build).
Wtyczka: W panelu Extensions szukamy „BitBake”. Upewnij się, że autorem jest yoctoproject.org.
Optymalizacja: Nie obciążaj CPU
Yocto generuje tysiące plików w folderze build. Jeśli VS Code zacznie je indeksować (szukać symboli, śledzić zmiany), Twój komputer szybko złapie zadyszkę.
W katalogu projektu stwórz .vscode/settings.json i dodaj wykluczenia:
Konfiguracja Dockera (CROPS)
Standardem pracy z Yocto jest kontener crops/poky. Problem w tym, że wtyczka oczekuje ścieżek, które „widzi” wewnątrz środowiska BitBake. Jeśli Twój projekt leży w /home/user/project, a w kontenerze montujesz go jako /workdir, ścieżki się rozjadą.
Rozwiązaniem jest parametr bitbake.commandWrapper. Musimy stworzyć skrypt (np. bitbake-crops-wrapper.sh), który będzie pośrednikiem:
Następnie w settings.json wskazujemy wtyczce, jak ma wywoływać BitBake:
Co zyskujemy?
Po poprawnej konfiguracji wtyczka oferuje możliwości, które w pewnych przypadkach mogą być bardzo wygodne:
-
Syntax Highlighting: Receptury (
.bb,.bbappend) i pliki konfiguracyjne (.conf) stają się bardziej czytelne. -
BitBake Explorer: Przeglądanie dostępnych warstw, receptur i zmiennych bezpośrednio z panelu bocznego. Dodatkowo po kliknięciu Ctrl+Lewy klawisz myszy możemy od razu przejść do definicji innej recepty.
-
Build Control: Możliwość uruchamiania tasków (build, clean, fetch) kliknięciem, bez wpisywania komend z palca.
