En yaygın kullanılan özellikler, birkaç basit kavram, hedef, bağımlılık ve değişkene ayrılabilir.
Hedefler oluşturmak istediğiniz şeylerdir, ancak bir hedefin altındaki komutlar derleyici komutları veya komut dosyaları olabilir. Genellikle her bir hedef kodunuzdaki bir modüle atıfta bulunur, ancak bunları projenize uygun olarak istediğiniz kadar yapabilirsiniz.
Bağımlılıklar projenizdeki dosyalar veya başka hedeflerdir. Bunun en iyi örneği, bir grup nesne dosyasından ikili oluşturduğunuz bir C projesidir. İkili yapıyı oluşturmadan önce her nesne dosyasının bulunması gerekir, bu nedenle tüm bağımlılıklar tamamlanana kadar hedeflerinizin geçişi gerçekleştirilir ve ardından genel hedef için komutu çalıştırın.
Değişkenler her zaman gerekli değildir, ancak derleyici bayrakları gibi şeyler için oldukça kullanışlıdır. Kanonik örnekler CC ve CCFLAG'lar olup, derleyiciye örneğin gcc'yi ve -ansi -Wall -o2 gibi bayrakları kullanır.
Birkaç tane daha genel ipuçları ve püf noktaları:
- Komutları bir [sekme] karakteri ile devam edilmelidir, ya da yürütülmez, bu marka sadece eski bir kalıntı, ı don Bunun neden olduğunu hatırlamıyorum.
- Kural olarak, hangi hedefin varsayılan olması gerektiğini varsayılan olarak belirlemek için bir hedef eklemek isteyebilirsiniz. Karmaşık bir makefile sahip olduğunuzda ve her zaman varsayılan olmak istediğiniz belirli bir hedef olduğunda bu yararlıdır.
- Sizin makefile makefile veya Makefile ettim, ama kullanmak, başka bir şey aramak istiyorsanız $ [makefilename]
- Her zaman tam değişken genişleme sözdizimi yani $ (DEĞİŞKEN) kullanmayın veya olmayabilir çıkışını yapmak -f yapmak gerekir İstediğiniz komutları.
- Yinelemeli olarak çalışabilirsiniz, bu nedenle, projenizde dizinlerin içinde yaşayan bir dizi alt modülünüz varsa, her biri oluşturmak için maket içinde alt dizin makefile üzerinde arama yapabilirsiniz.
- Kurulum komut dosyalarına gereksinim duyan, gerçekten karmaşık bir projeniz varsa, muhtemelen sizin için makefile oluşturan autotools'u araştırmak isteyeceksiniz ve kitaplık varlığını ve diğer taşınabilirlik sorunlarını denetlemek için bir dizi hile yapmalısınız.
Makefile için bir aile ağacının hoşgörülü görüneceğini duymuştum. : D –
Hiç birisinin kendi Perl/Python/ektlerini "yuvarlama" konusunda bir sürüye sahibim. Karmaşık veya "daha basit" yapı senaryoları için sistem. Aslında Python’un SCon'ları gibi çok büyük karmaşık kod tabanları ile yüzüne düşüyor. Ancak, diğer insanların yapacağı senaryoları "ödünç alarak", belki de senin de "ödünç al" diyebileceğine katılıyorum. – Tom
@Tom - 'neyin değiştiğini/yeniden yapılandırmaya ihtiyaç duyduğunu' çok fazla değil, DB'leri kurmak, seri numaraları oluşturmak ve CD'leri yazmak için daha fazla araç için daha fazla değil –