Kurs pisania makefile

Kurs pisania makefile
cpp_beginer
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 2 lata
  • Postów:105
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.

edytowany 1x, ostatnio: cpp_beginer
UH
  • Rejestracja:ponad 5 lat
  • Ostatnio:około rok
  • Postów:10
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

DO
  • Rejestracja:ponad 5 lat
  • Ostatnio:5 miesięcy
  • Postów:85
3

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

BG
Popieram, ewentualnie warto jeszcze zerknąć na Meson
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:2 minuty
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.


edytowany 3x, ostatnio: several
BG
  • Rejestracja:prawie 6 lat
  • Ostatnio:dzień
  • Postów:289
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

nalik
No bez przesady, widziałem parę naprawdę sporych projektów z gołym make, nie wygenerowanych przez cmake. Aczkolwiek trzeba przyznać, że ilość roboty rośnie i trzeba w zasadzie programować buildsystem. Widziałem też spore projekty z cmake. W obu wypadkach będą problemy. Dla mnie sensowną zaletą cmake jest to, że mogę podmienić potem wygenerowane make na coś innego, np. na ninja.
enedil
My pisaliśmy w projekcie makefile, ktory nam generował różne dockerfile xd
several
...powinieneś rozumieć dlaczego CMake jest jedynym przyszłościowym rozwiązaniem cmake to nie przyszłość a teraźniejszość, mam nadzieję że w przyszłości będą lepsze narzędzia.
BG
@enedil: Wiesz, ja kiedyś napisałem makefile który generował CMake, który generował właściwego Makefile (automat do budowania projektów studenckich pisanych w nie wiadomo czym ;) ) @several prawda
Satanistyczny Awatar
  • Rejestracja:ponad 6 lat
  • Ostatnio:5 dni
  • Postów:704
1

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

several
  • Rejestracja:prawie 16 lat
  • Ostatnio:2 minuty
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:

Kopiuj
Znacie jakieś kursy Makefile'a`?

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


BG
Wybacz, nie było moim celem edukowanie Cię w protekcjonalny sposób. Ale potrzebę edukowania faktycznie czuję ;). W tym konkretnie przypadku poczułem, bo napisałeś że nauka cmake to "zysk nie warty inwestycji". Co do sensowności polecania cmake - w przypadku początkującego naprowadzenie na lepsze narzędzie nie jest chyba nonsensem ?
several
Ten komentarz odnosił się do do sugestii jakoby warto było najpierw zaznajomić się z cmake bo potem z make jest prościej, wg mnie nauka dwóch różnych składni gdy zależy nam na jednej z nich to strata czasu. Nauka cmake jako takiego jak najbardziej polecam.
BG
Hmm, to nie był mój komentarz, ale jest w sumie poprawny - tyle że "uprości" trzeba rozumieć jako "wygeneruje automatycznie"
MO
  • Rejestracja:około 10 lat
  • Ostatnio:około 10 godzin
  • Lokalizacja:Tam gdzie jest (centy)metro...
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.


Każdy problem w informatyce można rozwiązać, dodając kolejny poziom pośredniości,z wyjątkiem problemu zbyt dużej liczby warstw pośredniości — David J. Wheeler
Miang
a kurs czytania makefile ktoś zna?
GI
GI
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:3
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.

cpp_beginer
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 2 lata
  • Postów:105
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.