2012-02-11 32 views
6

के साथ डेटा फ़ाइलों को कैसे पैकेज करें मैं एक नया सी ++ प्रोग्रामर हूं। मैंने एसडीएल पुस्तकालयों का उपयोग करके एक बहुत ही सरल खेल बनाया है। मेरा खेल, स्वाभाविक रूप से, कुछ छवियों, ध्वनियों और फोंट का उपयोग करता है। मैं पैकेज का वितरण करना चाहता हूं, जहां उपयोगकर्ता & & कॉन्फ़िगर कर सकता है। ऐसा नहीं है कि यह सरल गेम वितरित करने योग्य है, लेकिन मैं सीखना चाहता हूं कि ऑटोकॉन्फ़ और ऑटोमैट कैसे काम करता है। मैंने इंटरनेट के आसपास के उदाहरणों की खोज की लेकिन ट्यूटोरियल जो मुझे मिल सकता है केवल एक साधारण helloworld कार्यक्रम की स्थापना दिखाता है। वे न तो डेटा फ़ाइलों की स्थापना के बारे में बात करते हैं, न ही कुछ पुस्तकालय मौजूद हैं या नहीं, ताकि मैं संकलन समय में उनके खिलाफ लिंक कर सकूं। और साथ ही, मेरे कार्यक्रम को पता होना चाहिए कि प्रत्येक फ़ाइल कहां स्थापित हो जाती है ताकि वह उन्हें लोड कर सके। मैं automake और autoconf मैनुअल में पहुंचा है, लेकिन वे नए comers के लिए संसाधन होने की तुलना में एक संदर्भ सामग्री की तरह हैं। क्या कोई इस अवधारणा को संक्षिप्त रूप से समझा सकता है, या मुझे किसी ऐसे स्थान पर ले जा सकता है जहां मैं उनके बारे में पढ़ सकता हूं।जीएनयू के ऑटोकॉन्फ़ के साथ डेटा फ़ाइलों को पैकेज करने और

+0

मुझे पता चला है कि ऑटोकॉन्फ़/ऑटोमेक के साथ जाने का सबसे अच्छा तरीका यह है कि आप अपने जैसा प्रोजेक्ट ढूंढें, देखें कि वे क्या करते हैं, और दस्तावेज़ से वहां से काम करते हैं। –

+0

आप जॉन कैलकोट की पुस्तक "ऑटोटूल्स: ए प्रैक्शनर्स गाइड टू जीएनयू ऑटोकॉन्फ, ऑटोमैक, और लिबतोल" को देखना चाह सकते हैं –

+0

[बकरी बुक] (http://sourceware.org/autobook/) को और अधिक पठनीय परिचय के लिए आज़माएं autotools। उनके पास अलग-अलग जटिलताओं की कुछ उदाहरण परियोजनाएं हैं जो दिखाती हैं कि ऑटोोटूल के साथ सबसे आम चीजें कैसे करें। – ldav1s

उत्तर

13

मैंने इस पर कुछ शोध किया है, और मैं साझा करना चाहता हूं कि मेरे लिए क्या काम किया है। मैं इस तरह एक निर्देशिका संरचना बनाई है:

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

मैं अपने सभी छवियों, फोंट डाल दिया है, डेटा फ़ोल्डर में आदि लग रहा है। डेटा फ़ोल्डर पर Makefile.am इस तरह दिखता है:

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

यह केवल उन सभी फ़ाइलों को सूचीबद्ध करता है जिन्हें डेटा निर्देशिका में समाप्त होने की आवश्यकता होती है। src फ़ोल्डर में Makefile.am इस तरह दिखेगा:

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

महत्वपूर्ण यहाँ हिस्सा AM_CPPFLAGS, जो DATADIR मैक्रो को परिभाषित करता है, विकल्पों को कॉन्फ़िगर स्क्रिप्ट के लिए पारित के अनुसार है। तो फिर हम इस तरह हमारे स्रोत फ़ाइलों में इस मैक्रो का उपयोग कर सकते हैं:

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

ताकि अपने कार्यक्रम को जानने जहां पृष्ठभूमि फ़ाइल फाइल सिस्टम में होनी चाहिए संकलित कर दिया जाएगा।

+0

यदि आप इसे वितरित करना चाहते हैं तो आप dist_pkgdata_DATA का उपयोग करना चाहिए? –