Capita raramente che io dica ad un utente: lascia perdere che non sono cose per te. Questo è uno di quelli.
Senza offesa e con rispetto:
Sei fuori dal mondo, il mondo in questo caso è fatto da:
sistema operativo unix like, tipo ubuntu e in genere linux.
sistema di build, make (makefile), shell bash, avr-gcc frontend, gcc, ecc.
Il sistema di build preferito si basa sugli autotools, ma con arduino e in genere con i cross-compiler serve solo il comando make e la shell bash.
Comunque se hai la testa dura e perseveranza, come tutti puoi riuscire tranquillamente ad acquisire tutte le nozioni necessarie per compilare un makefile da dare in pasto al comando make, ma la strada è lunga, molto lunga se lo è troppo lo lascio decidere a te.
Su linux per compilare un programma anche molto complesso composta da centinaio di file ".c" o altro linguaggio la maggior parte delle volte basta aprire un terminale virtuale con la bash e scrivere:
$ cd build_my_project
$ ./config
$ make
$ make install
Con "cd" change directory entri in build_my_project che deve esistere nel filesystem
con "./config" avvi uno script bash che configura il sorgente per fare si che tu possa compilare su ubuntu, fedora, unix, ed in genere su ogni sistema compatibile con posix.
con "make" si avvia il processo di build che coinvolge tanti programmi compreso il compilatore ecc, ma potrebbe anche chiamare utiliti che creano la documentazione in più formati, html, pdf ecc.
infine con "make install" il programma appena compilato viene installato nel percorso standard /usr/local
3 soli comandi potentissimi.
Oppure qual'è il tuo obbiettivo imminente, cioè perchè vuoi usare la strada del makefile?
PS:magari ti basta qualche modifica ad un makefile generico per risolvere.
Ciao.