Kategoria: Bez kategorii

CMake – automatyczna obsługa podprojektów z gita

W poprzednim odcinku skonfigurowaliśmy sobie większy projekt. Mieliśmy oddzielne targety na poszczególne podprojekty. Dzięki temu dało się na przykład utworzyć bibliotekę statyczną, czy dodać bibliotekę header only. Dzięki odpowiedniej konfiguracji byliśmy w stanie raz skompilować podprojekt i używać go w wielu targetach. Teraz pójdziemy o krok dalej. Nasze podprojekty będą automatycznie ściągane z własnych repozytoriów.

W przykładzie użyje repo na GitHubie, ale równie dobrze można użyć innych systemów kontroli wersji, serwerów, czy nawet lokalnych plików. Zalety takiego rozwiązania w większych projektach są nieocenione. Po pierwsze możemy sensownie zarządzać aktualizacjami zewnętrznych bibliotek, a po drugie możemy tworzyć własne reużywalne biblioteki z aktualizacjami propagowanymi na wszystkie projekty.

Continue reading

CMake – jak używać w większych projektach?

We wcześniejszym artykule pokazałem jak napisać prosty skrypt CMake. Za jego pomocą możemy zrealizować najważniejsze zadania stawiane skryptowi budowania. A więc możemy dodawać pliki źródłowe, headery, flagi kompilacji, czy definicje preprocesora.

Na początek taki skrypt jest jak najbardziej w porządku. Robi to co powinien i pozwala nam oswoić się ze składnią i działaniem CMake. Ale to nie jest najlepszy sposób pisania skryptów CMake i kiedy będziemy chcieli skorzystać z bardziej zaawansowanych opcji – możemy mieć problemy.

Dlatego w dzisiejszym wpisie zobaczymy jak pisać skrypty CMake zgodnie ze sztuką i jakie z tego będziemy mieć korzyści. Dowiemy się też dlaczego w skryptach CMake powinniśmy zawsze korzystać z komend z prefixem target_.

Continue reading

Rekrutacja w embedded – live na YT

W poniedziałek o 20:00 zapraszam na YouTube na kolejny live! Porozmawiamy sobie o rekrutacji na programistę niskopoziomowego. Będzie między innymi o tym:

  • Jakich pytań możesz się spodziewać?
  • Co jest brane pod uwagę przy ocenianiu odpowiedzi?
  • Co musisz umieć aplikując na juniora/mida/seniora?
  • Kiedy aplikować do swojej pierwszej pracy?
  • Jak w embedded radzą sobie osoby, które się przebranżowiły?
  • Czym różni się rekrutacja zdalna od klasycznej?
Continue reading

Generowanie headerów ze stałymi w CMake

W prawie każdym projekcie potrzebujemy przechowywać jakieś wartości, które zmieniamy w zależności od wersji projektu. Najbardziej oczywistym przykładem jest właśnie numer wersji. Ale czasem chcemy wyświetlać również commit id z gita, datę kompilacji, czy użytą wersję kompilatora. Nie muszę chyba dodawać, że aktualizacja takich danych ręcznie jest niezwykle uciążliwa, a czasem wręcz niemożliwa (jak dodać commit id bezpośrednio w kodzie bez modyfikowania bez modyfikowania go?). W większych projektach będziemy w tym celu używać dodatkowych skryptów. A CMake ma wbudowane wsparcie do tego typu operacji.

Continue reading

Podsumowanie roku 2020

Już od kilku lat w styczniu podsumowuję, co wydarzyło się w poprzednim roku. I za każdym razem przypominam sobie takie zdanie, że przeceniamy ile jesteśmy w stanie zrobić w ciągu jednego dnia, ale nie doceniamy ile jesteśmy w stanie zrobić w ciągu jednego roku. Za każdym razem taka retrospektywa pozwala mi zrozumieć jak wiele się wydarzyło i inaczej spojrzeć na różne codzienne problemy. Nie muszę chyba dodawać, że później w ciągu roku coraz bardziej o tym zapominam 🙂

Rok 2020 to oczywiście rok pandemii i zewsząd jesteśmy bombardowani opiniami jaki był fatalny. No i faktycznie zamknięcie w domu na pewno nie prowadzi do niczego dobrego zarówno od strony mentalnej jak i gospodarczej. Jednak podsumowanie pokazało mi, że w 2020 miałem wiele powodów do radości.

Continue reading

Jak napisać skrypt cmake?

W tym artykule pokażę jak napisać prosty skrypt cmake. Zrealizujemy najważniejsze zadania, jakich wymagamy od skryptu budowania:

  • Dodawanie plików źródłowych.
  • Określenie ścieżek include.
  • Określenie globalnych define’ów.
  • Dodanie bibliotek statycznych.
  • Dodanie flag kompilacji.

Dzięki skryptowi CMake możemy łatwo uruchamiać kompilację na różnych systemach operacyjnych, systemach budowania i generować projekty na różne IDE.

Continue reading

30 devstories

Od jakiegoś czasu biorę udział w akcji #30devstories i publikuję nagrania na YouTube. Chodzi w skrócie o to, żeby nagrać 30 filmików związanych z różnymi aspektami programowania.

Na razie opublikowałem 6 odcinków:

Więcej o samej akcji mówię tutaj:

Kolejne odcinki znajdziecie na moim kanale YouTube.

Jeżeli również chcesz wziąć udział w akcji – weź kamerę i podziel się swoimi przemyśleniami z pracy jako programista!

Compiler explorer – Twój najlepszy przyjaciel w rozmowach o wydajności kodu

W artykułach o sprytnym kodzie i mikrooptymalizacjach postawiłem tezę, że często większa wydajność kodu, którą usprawiedliwiamy zmniejszenie czytelności, jest fikcją. Aby to stwierdzić potrzebujemy danych. Tymi danymi są czas wykonania aplikacji i kod asemblerowy generowany przez kompilator. Dzisiaj opiszę narzędzie przeglądarkowe pozwalające nam analizować właśnie kod asemblerowy. A jest nim Compiler Explorer.

Continue reading