2012-02-11 34 views
6

Oldukça yeni bir C++ programcısıyım. SDL kütüphanelerini kullanarak çok basit bir oyun yaptım. Oyunum doğal olarak bazı görüntüler, sesler ve yazı tipleri kullanıyor. Kullanıcının & & yapısını yapılandırabileceği paketin dağıtımını yapmak istedim. Bu basit oyunun dağıtmaya değmeyeceği gibi değil, ama autoconf ve automake'nin nasıl çalıştığını öğrenmek istiyorum. İnternetteki örnekleri aradım ama bulabildiğim dersler sadece basit bir helloworld programının kurulumunu gösteriyor. Veri dosyalarının kurulumundan ya da belirli kütüphanelerin mevcut olup olmadığını nasıl derlerler, böylece derleme zamanında bunlara karşı bağlantı kurabilirler. Ayrıca, programım her dosyanın nereye yükleneceğini bilmesi için yüklemelidir. Automake ve autoconf kılavuzlarını inceledim, ama onlar yeni gelenler için bir kaynak olmaktan çok referans materyaller gibiler. Herkes bu kavramları kısaca açıklayabilir veya beni okuyabileceğim bir yere yönlendirebilir.GNU'nun autoconf ve automake ile veri dosyalarını nasıl paketlenir

+0

Autoconf/automake ile gitmenin en iyi yolunun, kendinize benzeyen bir proje bulması, neler yaptığını görmeniz ve belgelerle birlikte oradan çalışmanız olduğunu öğrendim. –

+0

John Calcote'un "Autotools: Bir Uygulayıcı Kılavuzu, GNU Autoconf, Automake ve Libtool" kitabına bakmak isteyebilirsiniz. –

+0

[Goat Book] 'u (http://sourceware.org/autobook/) daha okunabilir bir giriş için deneyin. Autotools. Autotools ile en yaygın şeylerin nasıl yapılacağını gösteren çeşitli karmaşıklığa sahip birkaç örnek projeler var. – ldav1s

cevap

13

Bu konuda biraz araştırma yaptım ve benim için neyin işe yaradığını paylaşmak istedim. Böyle bir dizin yapısını oluşturduk: Ben bütün görüntüler, fontlar koyduk

/ 
|->src/ 
| |-> Makefile.am 
| |-> main.cpp 
| |-> functions.cpp 
| 
|-> data/ 
| |-> Makefile.am 
| |-> somethings.png 
| |-> something.mp3 
|-> configure.ac 
|-> README 
|-> NEWS, AUTHORS etc. etc. 

, veri klasöründe vb duyulur. veri klasörü Makefile.am şuna benzer:

pkgdata_DATA = esound.wav \ 
       another.wav \ 
       apicture.png 

Bu sadece veri dizininde sonunda olmak için gereken tüm dosyaları listeler. src klasöründe Makefile.am şuna benzer: Burada

bin_PROGRAMS = mygame 
mygame_SOURCES = main.cpp functions.cpp 
AM_CPPFLAGS = -DDATADIR=\"$(pkgdatadir)\" 

önemli bir parçası yapılandırmak komut dosyasına geçirilen seçeneklerine göre, DATADIR makro tanımlayan AM_CPPFLAGS vardır. Öyleyse böyle bizim kaynak dosyalarında bu makroyu kullanabilirsiniz:

background = load_image(DATADIR "/background.png"); 

program arka plan dosya dosya sisteminde nerede bulunması gerektiğini bilerek derlenmiş alacak diye.

+0

Dağıtmak isterseniz dist_pkgdata_DATA kullanıyor musunuz? –