Makefiles Make Your Life Easier

Поделиться
HTML-код
  • Опубликовано: 2 фев 2025

Комментарии • 94

  • @raisi96
    @raisi96 8 месяцев назад +29

    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 года назад +162

    Neuralnine casually creating a c files in a python director

  • @potatocoder5090
    @potatocoder5090 Год назад +22

    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 Год назад +19

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

    • @hansdampf2284
      @hansdampf2284 2 месяца назад +3

      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 Год назад +14

    thank you so much man, excellent explanation!

  • @rishichowdary9764
    @rishichowdary9764 Год назад +4

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

  • @raunakwete4881
    @raunakwete4881 7 месяцев назад +2

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

  • @bijeshmohan
    @bijeshmohan 2 года назад +3

    I was looking for this! Thanks.

  • @idrisalhajiadamu7590
    @idrisalhajiadamu7590 Год назад +2

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

  • @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 2 месяца назад

      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.

  • @vonderklaas
    @vonderklaas Год назад +1

    Thanks man, very helpful! Subscribed!

  • @novaexplorers
    @novaexplorers Месяц назад

    Love it ..👍Explained the Simplest way

  • @batteryjuicy4231
    @batteryjuicy4231 2 месяца назад +1

    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

  • @LazizbekYusupov92
    @LazizbekYusupov92 Год назад +1

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

  • @jeffreyhunter4115
    @jeffreyhunter4115 Год назад +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 года назад +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.

    • @sigmaohiophonk
      @sigmaohiophonk Год назад +1

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

    • @lawrencedoliveiro9104
      @lawrencedoliveiro9104 Год назад

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

    • @sigmaohiophonk
      @sigmaohiophonk Год назад

      @@lawrencedoliveiro9104 what the first reply says

  • @Universe822
    @Universe822 9 месяцев назад

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

  • @ruslanart8734
    @ruslanart8734 8 месяцев назад

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

  • @ZuhairKhouri2003
    @ZuhairKhouri2003 Год назад +1

    Excellent video!🙏

  • @md2perpe
    @md2perpe 2 года назад +16

    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?

  • @ZeroCool2211
    @ZeroCool2211 11 месяцев назад

    Thank u for uploading this

  • @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 Год назад +4

      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.

  • @claudestephaneadriendjanti4227
    @claudestephaneadriendjanti4227 11 месяцев назад +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

  • @Mr_W_a_N
    @Mr_W_a_N 5 месяцев назад

    the intro is staring at my soul

  • @hansdampf2284
    @hansdampf2284 2 месяца назад

    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?

  • @ConcealedSteel2
    @ConcealedSteel2 9 месяцев назад

    Excellent tutorial!

  • @BlackCat-gh8fr
    @BlackCat-gh8fr Год назад +1

    Thanks, simple and helpful.

  • @dinispetrukha4382
    @dinispetrukha4382 Год назад

    Awesome Job!

  • @IshanSathe-rm9uk
    @IshanSathe-rm9uk 9 месяцев назад

    Thanks! That helped a lot :).

  • @kirito6374
    @kirito6374 Год назад

    Very Informative!

  • @adetolasanni007
    @adetolasanni007 Год назад

    Thanks man. Clear enough

  • @nimishanaruka4767
    @nimishanaruka4767 Год назад

    Great help!!

  • @Anonymous-lw1zy
    @Anonymous-lw1zy Год назад

    Superb!

  • @johnnwick733
    @johnnwick733 Год назад

    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 Год назад +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.

  • @NickFletcher-gb9ne
    @NickFletcher-gb9ne 9 месяцев назад

    Great thank you very much.

  • @Jonathan-ru9zl
    @Jonathan-ru9zl Год назад

    Great!

  • @Orangehat000
    @Orangehat000 11 месяцев назад

    thank you so much

  • @vishnubalaji9500
    @vishnubalaji9500 Год назад

    does it work on windows too or any equivalent?

  • @mohamedabotayeh4115
    @mohamedabotayeh4115 Год назад

    guys why it says nv is not found for me?

  • @relytheone853
    @relytheone853 Год назад +1

    And you haven't scratch the surface...

  • @kingnexa7257
    @kingnexa7257 2 года назад

    Thanks

  • @xntumrfo9ivrnwf
    @xntumrfo9ivrnwf 2 года назад +2

    What ide are you using? With the nv command

  • @lsouza1327
    @lsouza1327 2 года назад

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

  • @teddycallejero
    @teddycallejero Год назад

    Thx

  • @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.

  • @RockTo11
    @RockTo11 Год назад

    That can be easily achieved using a batch file too.

    • @AbAb-th5qe
      @AbAb-th5qe Год назад

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

  • @sakithb
    @sakithb Год назад

  • @TMNIARB3A
    @TMNIARB3A Год назад +1

    RAK GHAYA

  • @thg1nrediar
    @thg1nrediar 2 года назад +1

    Good

  • @Zancb
    @Zancb Год назад +1

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

  • @guilherme5094
    @guilherme5094 2 года назад

    👍

  • @philtoa334
    @philtoa334 2 года назад

    Thx_.

  • @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 9 месяцев назад

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

  • @iamraghug
    @iamraghug 10 месяцев назад

    Thanks