Makefiles Make Your Life Easier

แชร์
ฝัง

ความคิดเห็น • 93

  • @raisi96
    @raisi96 5 หลายเดือนก่อน +21

    It's also worth mentioning that the power of make comes from that it tracks file changes, where if you run make all and then modify only one source file, when you run make all the second time, only that single file gets recompiled and not all files, and if nothing changed it wouldn't recompile again

  • @insert9124
    @insert9124 2 ปีที่แล้ว +144

    Neuralnine casually creating a c files in a python director

  • @potatocoder5090
    @potatocoder5090 ปีที่แล้ว +19

    Thank you for creating this tutorial! Because you explained what the manual way looks like and its pitfalls, it helped me appreciate Makefiles. You are a great teacher!

  • @FroyoAnto
    @FroyoAnto ปีที่แล้ว +17

    this whole time I was writing my own batch file for this, never knew this existed 💀

    • @hansdampf2284
      @hansdampf2284 9 วันที่ผ่านมา

      But make does more than just running tasks. A Makefile also builds a dependency tree so to speak and if you say make xy.o it looks up what is needed for xy.o and first builds that, the proceeds building xy.o.
      Make can be used for simple task running as well, but it has its quirks. There’s better task runners based on bash out there

  • @eumm11
    @eumm11 ปีที่แล้ว +13

    thank you so much man, excellent explanation!

  • @rishichowdary9764
    @rishichowdary9764 ปีที่แล้ว +4

    got the clear understanding , GOTCHA
    thanks by the way
    Well done , CHAP

  • @emilie1977
    @emilie1977 2 ปีที่แล้ว +21

    thank you! I have 3 books on C but no one has told me how to make a Makefile

    • @caiodavi9829
      @caiodavi9829 ปีที่แล้ว +8

      thats because makefile has nothing to do with C. its just a software thar allows you to use logic while executing CLI commands. of course, you can use it to compile C projects too

    • @hansdampf2284
      @hansdampf2284 9 วันที่ผ่านมา

      The problem is that the C ecosystem is so scattered and all of those things are separate.
      When C started, it wasn’t even combined with the preprocesser. This came as an afterthought.
      Make files as a simple build system that keeps track of dependencies between files and freshness of build artifacts came as an afterthought as well.
      Documentation with doc comments and doxygen came as an afterthought.
      Testing is something that was bolted on as an afterthought.
      But this is also C‘s biggest strength. It’s very flexible.

  • @idrisalhajiadamu7590
    @idrisalhajiadamu7590 ปีที่แล้ว +2

    I learn something and have hit the like button, thank you very much.😎

  • @Universe822
    @Universe822 7 หลายเดือนก่อน

    Thank you. I used to do huge commands in the terminal but it's high time I use make.

  • @bijeshmohan
    @bijeshmohan 2 ปีที่แล้ว +3

    I was looking for this! Thanks.

  • @ruslanart8734
    @ruslanart8734 6 หลายเดือนก่อน

    I finally managed to link libraries because of this tutorial. I can now commit to learning c.

  • @raunakwete4881
    @raunakwete4881 5 หลายเดือนก่อน

    We can also write a build shell script to compile small projects.

  • @vonderklaas
    @vonderklaas ปีที่แล้ว +1

    Thanks man, very helpful! Subscribed!

  • @jeffreyhunter4115
    @jeffreyhunter4115 11 หลายเดือนก่อน +1

    Very well explained. Thanks for sharing.

  • @lawrencedoliveiro9104
    @lawrencedoliveiro9104 2 ปีที่แล้ว +7

    10:38 Why did you have to do “make clean”? A key point with make is that it only rebuilds the parts that have changed, yet you are forcing it to rebuild everything.

    • @tiagobecerrapaolini3812
      @tiagobecerrapaolini3812 2 ปีที่แล้ว

      One reason is to rebuild the entire project from scratch, in case something got corrupted along the way or just to be safe when building the final executables. Or maybe just to free some space of build artifacts, once everything is finished.

    • @lawrencedoliveiro9104
      @lawrencedoliveiro9104 2 ปีที่แล้ว

      @@tiagobecerrapaolini3812 But it’s not something you would want to do every time.

    • @CorneliusCorndogJr
      @CorneliusCorndogJr ปีที่แล้ว

      @@lawrencedoliveiro9104no the point is to simplify the process and write less commands

    • @lawrencedoliveiro9104
      @lawrencedoliveiro9104 ปีที่แล้ว

      @@CorneliusCorndogJr The point of “make” is to follow the dependency chain and only rebuild what needs to be rebuilt.

    • @CorneliusCorndogJr
      @CorneliusCorndogJr ปีที่แล้ว

      @@lawrencedoliveiro9104 what the first reply says

  • @batteryjuicy4231
    @batteryjuicy4231 10 วันที่ผ่านมา

    it's been 3 days and 5 tutorials and finally someone said the makefile should not have a capital f!!! great video you are a great teacher

  • @md2perpe
    @md2perpe 2 ปีที่แล้ว +14

    Doesn't it disturb you having a prompt that takes up more that 2/3 of the screen width? I have shortened my prompt and added line breaks into it so that the information (like host and directory) is on one line and the actual prompt is alone on another line.

    • @IonizedComa
      @IonizedComa ปีที่แล้ว

      Long prompts are not bad if you're using a 2 line prompt, which for bash can easily be fixed with oh my bash

    • @dapodix
      @dapodix ปีที่แล้ว

      Downside / Consequence of using WSL?

  • @LazizbekYusupov92
    @LazizbekYusupov92 ปีที่แล้ว +1

    Awesome work! It made clear it all in one video!

  • @hansdampf2284
    @hansdampf2284 9 วันที่ผ่านมา

    Putting a function implementation into a header file is a good idea?
    What happens when you include that header file in more than one c file?

  • @Mr_W_a_N
    @Mr_W_a_N 2 หลายเดือนก่อน

    the intro is staring at my soul

  • @ZuhairKhouri2003
    @ZuhairKhouri2003 ปีที่แล้ว +1

    Excellent video!🙏

  • @shadowrealm8937
    @shadowrealm8937 ปีที่แล้ว +1

    What is the point to do -c first and then compile from object files? It will compile if you just put *.c files right? What is the point of this *.o file, it just seems like extra step for no reason.

    • @SteelFoundations
      @SteelFoundations 10 หลายเดือนก่อน +3

      It is an extra step. The reason is because if you're working on a large project with thousands of files, recompiling every single file will take hours. By splitting the build into separate compiling and linking stages, you can skip the compiling stage for files that don't need to be recompiled.

  • @IshanSathe-rm9uk
    @IshanSathe-rm9uk 7 หลายเดือนก่อน

    Thanks! That helped a lot :).

  • @ZeroCool2211
    @ZeroCool2211 9 หลายเดือนก่อน

    Thank u for uploading this

  • @BlackCat-gh8fr
    @BlackCat-gh8fr ปีที่แล้ว +1

    Thanks, simple and helpful.

  • @ConcealedSteel2
    @ConcealedSteel2 6 หลายเดือนก่อน

    Excellent tutorial!

  • @claudestephaneadriendjanti4227
    @claudestephaneadriendjanti4227 9 หลายเดือนก่อน +1

    i dont realy understand how you manage to displaye the content of the function(hello world) minewhile this function is not part of the defferen functioncreated using flags and from what i see they are not diretly connected

  • @adetolasanni007
    @adetolasanni007 ปีที่แล้ว

    Thanks man. Clear enough

  • @kirito6374
    @kirito6374 ปีที่แล้ว

    Very Informative!

  • @NickFletcher-gb9ne
    @NickFletcher-gb9ne 6 หลายเดือนก่อน

    Great thank you very much.

  • @nimishanaruka4767
    @nimishanaruka4767 11 หลายเดือนก่อน

    Great help!!

  • @dinispetrukha4382
    @dinispetrukha4382 ปีที่แล้ว

    Awesome Job!

  • @relytheone853
    @relytheone853 ปีที่แล้ว +1

    And you haven't scratch the surface...

  • @johnnwick733
    @johnnwick733 11 หลายเดือนก่อน

    Hey, we couldve just included the hello.c file in the main.c code and run gcc main.c. Why are we using makefiles then ?

    • @SteelFoundations
      @SteelFoundations 10 หลายเดือนก่อน +4

      Including hello.c in main.c would create one huge .c file when compiling. That prevents you from splitting builds into separate compile and link stages, which greatly slows down builds when you're working on projects with thousands of files. The strength of makefiles is more than just running the gcc or compiler commands for you; makefiles also determine which files need to be compiled and which ones can be skipped.

  • @Anonymous-lw1zy
    @Anonymous-lw1zy 10 หลายเดือนก่อน

    Superb!

  • @Orangehat000
    @Orangehat000 8 หลายเดือนก่อน

    thank you so much

  • @vishnubalaji9500
    @vishnubalaji9500 ปีที่แล้ว

    does it work on windows too or any equivalent?

  • @JohnZakaria
    @JohnZakaria 2 ปีที่แล้ว +2

    I hate makefiles, cmake is much better at generating them (or even using Ninja).

    • @lawrencedoliveiro9104
      @lawrencedoliveiro9104 2 ปีที่แล้ว +3

      Ninja is an alternative to makefiles.
      Make originated at a time when it was expected you would write makefiles by hand. So Make (particularly GNU Make) includes a lot of features for expressing complex rules and expressions and things, to minimize the size of the makefiles you have to write. But nowadays, many if not most makefiles are generated by front-end processors like CMake or Meson or even GNU Autotools. So a lot of the advanced stuff in Make is not really necessary and just duplicates the functionality of those front-end processors.
      So we have Ninja, which is like a stripped-down reimagining of Make, which assumes that you will use such a front-end processor, rather than writing your Ninja files by hand.

  • @kingnexa7257
    @kingnexa7257 ปีที่แล้ว

    Thanks

  • @Jonathan-ru9zl
    @Jonathan-ru9zl ปีที่แล้ว

    Great!

  • @teddycallejero
    @teddycallejero ปีที่แล้ว

    Thx

  • @mohamedabotayeh4115
    @mohamedabotayeh4115 10 หลายเดือนก่อน

    guys why it says nv is not found for me?

  • @sakithb
    @sakithb 9 หลายเดือนก่อน

  • @thg1nrediar
    @thg1nrediar 2 ปีที่แล้ว +1

    Good

  • @TMNIARB3A
    @TMNIARB3A ปีที่แล้ว +1

    RAK GHAYA

  • @xntumrfo9ivrnwf
    @xntumrfo9ivrnwf 2 ปีที่แล้ว +2

    What ide are you using? With the nv command

  • @Zancb
    @Zancb ปีที่แล้ว +1

    Jesus christ, change your PS1. That's way too long bro.

  • @philtoa334
    @philtoa334 2 ปีที่แล้ว

    Thx_.

  • @guilherme5094
    @guilherme5094 2 ปีที่แล้ว

    👍

  • @lsouza1327
    @lsouza1327 2 ปีที่แล้ว

    you could get zsh shell and use a prompt with break line

  • @RockTo11
    @RockTo11 ปีที่แล้ว

    That can be easily achieved using a batch file too.

    • @AbAb-th5qe
      @AbAb-th5qe 10 หลายเดือนก่อน

      They have more power than that for incremental builds. Makefiles are s**t, but at least they're simple

  • @bapisarkar4124
    @bapisarkar4124 ปีที่แล้ว

    I need to talk you something important can I,,
    Have a think for something if you don't mind

  • @SeriousGamer42
    @SeriousGamer42 ปีที่แล้ว

    No it fucking don’t.
    I wrote 1 make file and almost kms several times.

  • @igormicovic
    @igormicovic 7 หลายเดือนก่อน

    Tbh to me it seems you got no clue what ya doin

  • @iamraghug
    @iamraghug 8 หลายเดือนก่อน

    Thanks