2010-12-20 17 views
7

के लिए क्रॉस-प्लेटफ़ॉर्म पथ प्राप्त करना मैं अपने एप्लिकेशन की सेटिंग्स को कॉन्फ़िगरेशन फ़ाइल में संग्रहीत करना चाहता हूं। लिनक्स (और मैक?) के तहत यह (हो सकता है) /home/user/.config/app.conf हो, जबकि विंडोज़ के तहत यह (सी) "सी: \ दस्तावेज़ और सेटिंग्स \ उपयोगकर्ता नाम \ अनुप्रयोग डेटा \ app.conf" हो सकता है। यह निश्चित रूप से कहीं और संग्रहीत किया जा सकता है, इसलिए सही स्थान प्राप्त करने का एकमात्र तरीका प्लेटफ़ॉर्म-विशिष्ट फ़ंक्शन का उपयोग करना है।कॉन्फ़िगरेशन फ़ाइल (सी/सी ++)

यह कहने के लिए पर्याप्त है कि मैं इसे स्वयं कोडिंग और इसे गलत होने का जोखिम उठाना नहीं चाहता (क्योंकि मुझे परीक्षण के लिए इनमें से कुछ प्लेटफॉर्म तक पहुंच नहीं है), तो क्या किसी को पता है कि कोई अच्छी तरह से परीक्षण किया गया क्रॉस-प्लेटफार्म है सी/सी ++ पुस्तकालय जो यह कर सकते हैं? एक .h/.hpp फ़ाइल जो #defines का समूह उपयोग करती है, ठीक है, जब तक इसका व्यापक रूप से उपयोग किया जाता है।

मैंने सोचा कि बूस्ट के प्रोग्राम विकल्प लाइब्रेरी में सक्षम हो सकता है (क्योंकि यह कॉन्फ़िगरेशन फ़ाइलों को लोड कर सकता है) लेकिन ऐसा लगता है कि यह सक्षम नहीं है।

कोई सुझाव?

उत्तर

3

यह फिर से आया, इसलिए मैंने बुलेट काटने और अपना स्वयं का समाधान बनाने का फैसला किया क्योंकि केवल मौजूदा लोग छोटे ढांचे और छोटे कार्यक्रमों के लिए अव्यवहारिक हैं।

मैं https://github.com/Malvineous/cfgpath

पर कोड को प्रकाशित किया है यह सार्वजनिक डोमेन इसलिए किसी भी प्रयोजन के लिए किसी के द्वारा उपयोग करने के लिए मुक्त रखा गया है। मानक प्लेटफार्म एपीआई से परे इसकी कोई निर्भरता नहीं है। बस #include एक एकल .h फ़ाइल और फ़ंक्शंस में से किसी एक को कॉल करें। रिपॉजिटरी में अन्य फाइलें केवल टेस्ट कोड हैं, आपको तब तक इसकी आवश्यकता नहीं है जब तक कि आप मेरे द्वारा भेजने के इरादे में परिवर्तन नहीं करना चाहते हैं (कृपया करें!)

दुर्भाग्यवश जैसा कि मैंने अपनी मूल पोस्ट में कहा था, मैं नहीं करता कई प्लेटफार्मों तक आसानी से पहुंच है, इसलिए मुझे आशा है कि मुझे अधिक प्लेटफार्मों के लिए समर्थन जोड़ने के लिए कुछ पैच मिलेगा।

0

मुझे लगता है कि boost filesystem libraries मदद करनी चाहिए। इसमें एक मंच स्वतंत्र पथ व्याकरण है।

+2

मैं किस व्याकरण का उपयोग करता हूं जो लिनक्स के तहत /home/user/.config के रूप में दिखाई देगा, लेकिन विंडोज के तहत स्वचालित रूप से सी: \ दस्तावेज़ और सेटिंग्स \ उपयोगकर्ता नाम \ ऐप डेटा बन जाएगा? – Malvineous

+0

प्रिय भगवान, * बूस्ट * केवल घर निर्देशिका खोजने के लिए इस्तेमाल किया जा रहा है? ओवरकिल के बारे में बात करो। मैं वह नहीं बनना चाहता हूं जिसे इसे मिनजीडब्ल्यू में संकलित करना है। – Wyatt8740

3

क्यूटी का QSettings कक्षा आपके लिए यह करेगी।

* nix सेटिंग्स को HOME/.config में संग्रहीत किया जाएगा। विंडोज़ पर सेटिंग्स रजिस्ट्री में संग्रहीत किया जाएगा। मैक पर सेटिंग्स $ HOME/लाइब्रेरी/प्राथमिकता/में संग्रहीत की जाएगी।

+0

'QDesktopServices :: संग्रहण स्थान (QDesktopServices :: डेटा स्थान) 'आज़माएं। Http://qt-project.org/doc/qt-4.8/qdesktopservices.html देखें –

संबंधित मुद्दे