Kurs pisania makefile

0

Nigdy jakoś szczególnie nie zagłębiałem się w ten temat. Szukam kursu pisania makefile lub jakiegoś większego projektu na githubie abym mógł podpatrzeć jak pisać dobre makefile dla dużych projektów tak aby można było każdy moduł kompilować osobno jak i również robić clean. Do tego dodawać flagi kompilacji aby można było budować kilka wariantów aplikacji. Czyli to co można spotkać na rozmowach i w projektach komercyjnych.

3

Ja bym zaczął od https://www.gnu.org/software/make/manual/make.html. Jest tam nawet większy przykład w Appendix C Complex Makefile Example

3

Polecam zapoznać się z cmake, który może trochę uprościć cały proces tworzenia makefile'a

2
_dominik napisał(a):

Polecam zapoznać się z cmake, który może trochę uprościć cały proces tworzenia makefile'a

Strata czasu. ...może trochę uprościć... to zysk nie warty inwestycji biorąc pod uwagę, że poświęcasz czas na naukę kompletnie innej składni. Poza tym, jedyne elementy wspólne jakie przychodzą mi na myśl to składanie wywołania kompilacji lub linkowania, ale nie widzę powodu dla którego miałbym uczyć się jak to robić w dwóch systemach budowania jeśli interesuje mnie tylko jeden z nich.

@cpp_beginer ja osobiście makefile'a uczę się na bieżąco, chcę zrobić X więc szukam w manualu bądź przykładach jak to X zrobić. Jedyne co musisz zrozumieć na początku, to specyfikę składni oraz w jaki sposób make interpretuje makefile'a. Jako punkt startowy masz przykład makefile'a, którego napisałem "z palca", który realizuje "Incremental Build" kompilując pliki z kilku folderów https://github.com/pdy/simpleopenssl/blob/master/Makefile Nie jest doskonały, ale jest prosty w zrozumieniu.

5

@several:
Narzędzia takie jak CMake albo Meson nie są odpowiednikami make, ale raczej "następnym etapem ewolucji".
Make jest fajny do małych i prostych projektów, ale nie skaluje się zbyt dobrze... Próbowałeś kiedyś napisać makefile dla dużego projektu, który powinien się budować nie tylko na Twoim komputerze ale na dowolnym współczesnym systemie operacyjnym ? Próbowałeś może kiedyś napisać własną konfigurację dla autotools ? Jeśli nie, to nie wiesz (jeszcze) w czym problem. Jeśli tak, to powinieneś rozumieć dlaczego CMake jest jedynym przyszłościowym rozwiązaniem ;)

@cpp_beginer
Poczytaj sobie
https://stackoverflow.com/questions/25789644/difference-between-using-makefile-and-cmake-to-compile-the-code

1

W pracy korzystałem zarówno z make, gmake jak i cmake, no i kmake. :P

3
Bartłomiej Golenko napisał(a):

@several:
Narzędzia takie jak CMake albo Meson nie są odpowiednikami make, ale raczej "następnym etapem ewolucji".
Make jest fajny do małych i prostych projektów, ale nie skaluje się zbyt dobrze... Próbowałeś kiedyś napisać makefile...

@Bartłomiej Golenko co to ma do rzeczy i dlaczego czujesz potrzebe edukowania mnie w tak protekcjonalny sposób? Zresztą nie ważne. @cpp_beginer konkretnie zapytał o kursy pisania makefile'a więc przekierowywanie uwagi na inny system to czysty offtopic. Można by ewentualnie dodać jakieś post scriptum, ale gdy pytanie brzmi tak:

Znacie jakieś kursy Makefile'a`?

to zwykłym nonsensem jest odpowiadanie "poucz się cmake'a" w pierwszym zdaniu.

4

Godnego polecenia kursu nie znam, bo sam uczyłem się z książki oraz w trakcie pisania projektów.
Możesz rozważyć zapoznanie się z:
https://www.oreilly.com/openbook/make3/book/index.csp
https://www.coursera.org/lecture/introduction-embedded-systems/1-introduction-to-build-systems-using-gnu-toolsets-7KkWV

Tylko czy warto kurs? Sam oceń.
Do tego warto zapoznać się z pozycją:
https://accu.org/index.php/journals/2004

.. aby wiedzieć co może Cię czekać przy bardziej złożonych projektach.
Poza tym, poświęcanie sporego czasu nauki na "systemy budowania zbliżone do prędkości światła" ( :) ), nie zawsze jest rozsądną strategią. Przez dłuższy czas I/O będzie jeszcze wąskim gardłem.

1

Jezeli chodzi o kurs, mysle ze moze byc ciezko. Pewnie wiekszosc ludzi zgodzi sie ze stwierdzeniem, ze kazdy projekt jest na tyle specyficzny, ze znalezienie jednego, idealnego sposobu pisania Makefile'i jest trudne.

Jezeli chodzi o ksiazki, to goraco polecam te dwie pozycje: https://nostarch.com/gnumake oraz https://nostarch.com/autotools2e - jedna o GNU Make a druga o tym, jak podejsc do bardziej skomplikowanych projektow z uzyciem autotools. Te ksiazki to przyklad typowo amerykanskiej literatury naukowej, czyli sposobu prezentacji tematow skomplikowanych w sposob bardzo przystepny. Mozesz tez rzucic okiem na przyklady projektow - zeby zobaczyc jak robia to inni. Jezeli chcesz w miare skomplikowany przyklad, ale podany na tacy, rzuc okiem tutaj (wprawdzie Fortran, ale zmiana na co innego nie bedzie skomplikowana): https://www.owsiak.org/fortran-and-gnu-make. Z kolei tutaj (https://gitlab.com/mkowsiak/converter) mozesz zobaczyc jak przy pomocy GNU Make zorganizowac budowanie przy pomocy wielu mniejszych Makefile'i - kazdy odpowiada za inna czesc projektu.

0

Najpierw zacznę od nauki pisania makefile, dopiero jak opanuję to przejdę do cmake.

1 użytkowników online, w tym zalogowanych: 0, gości: 1