2012-01-16 10 views
5

मुझे सी ++ से JS तक पारदर्शी करने के लिए कॉन्फ़िगरेशन फ़ाइल की आवश्यकता है, मैं किसी प्रोजेक्ट में emscripten का उपयोग करने का प्रयास कर रहा हूं। Emscripte emconfigure नामक एक उपकरण के साथ आता है, जो autoconf कॉन्फ़िगरेशन को प्रतिस्थापित करता है,क्या सीएमके कॉन्फ़िगरेशन फ़ाइल उत्पन्न कर सकता है?

लेकिन जिस परियोजना को मैं बिल्ड कर रहा हूं वह निर्माण प्रणाली के रूप में cmake का उपयोग करता है और वर्तमान में (जनवरी -12) ईएमएसक्रिप्ट के पास केवल ऑटोकॉन्फ़ के लिए समर्थन है - इसलिए मैं इसे छोड़ रहा हूं कॉन्फ़िगरेशन उत्पन्न करके और मेक पर पोर्ट बनाकर, तो cmake से कॉन्फ़िगरेशन फ़ाइल बनाने का कोई तरीका है ?? मैं फ़ाइलों को बनाने के बारे में बात नहीं कर रहा हूं .. लेकिन कॉन्फ़िगर फ़ाइल स्वयं ही।

+0

जिस तरह से आप भाषा का अनुवाद करना चाहते हैं। क्या आप अधिक विशिष्ट हो सकते हैं? – Neox

+1

यह सवाल अस्पष्ट है। सीएमके इस तरह कॉन्फ़िगर नामक एक स्क्रिप्ट उत्पन्न नहीं कर सकता है जिस तरह से ऑटोकॉन्फ़ करता है - यह एक समान काम करने के लिए अलग-अलग काम करता है। लेकिन यह स्रोत पेड़ में फ़ाइलों पर विन्यास संचालन कर सकता है। क्या भाषा अनुवाद किया जा रहा है? Emscripte क्या कुछ भी करने के लिए मिला है? – mabraham

उत्तर

15

हाँ, यह कर सकते हैं:

configure_file(<input> <output> 
       [COPYONLY] [ESCAPE_QUOTES] [@ONLY] 
       [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ]) 

Example.h.in

#ifndef EXAMPLE_H 
#define EXAMPLE_H 

/* 
* These values are automatically set according to their cmake variables. 
*/ 
#define EXAMPLE "${VALUE}" 
#define VERSION "${VERSION}" 
#define NUMBER ${NUMBER} 

#endif /* EXAMPLE_H */ 

अपने cmake फ़ाइल में:

set(EXAMPLE "This is an example") 
set(VERSION "1.0") 
set(NUMBER 3) 

configure_file(Example.h.in Example.h) 

कॉन्फ़िगर Example.h:

#ifndef EXAMPLE_H 
#define EXAMPLE_H 

/* 
* These values are automatically set according to their cmake variables. 
*/ 
#define EXAMPLE "This is an example" 
#define VERSION "1.0" 
#define NUMBER 3 

#endif /* EXAMPLE_H */ 

प्रलेखन:

+0

कमाल, उत्तर के लिए धन्यवाद। बहुत उपयोगी !! – Jacko

+0

चरम पर गलत होने पर सीएमके अपरिचित होगा। जैसे यदि संख्या 0 है, तो यह इसे परिभाषित नहीं करेगा। ठीक करने के लिए कोई रास्ता है?मैं बस इसे हल करने के लिए ifndef का उपयोग कर रहा हूँ। –

+0

क्या आप '# cmakedefine' या सादा' # परिभाषित' का उपयोग कर रहे हैं? उत्तरार्द्ध यह नहीं करना चाहिए। यदि यह या तो काम नहीं करता है, तो आप टेम्पलेट फ़ाइल में '#ifnedf ... #define ... 'जोड़ सकते हैं। – ollo

0

हाँ सेमेक आपको उन प्लेटफॉर्म जेनरेट करता है जिन्हें आपको अपने लक्षित प्लेटफ़ॉर्म के आधार पर प्रोजेक्ट बनाने के लिए आवश्यक है। हालांकि आपको सीएमकेलेस्ट.txt की फाइलें स्वयं को सीएमके के लिए लिखने की ज़रूरत है या आपको उन्हें किसी और से प्राप्त करना होगा। यदि emscripten उन्हें है और आप cmake स्थापित किया है, को देखने के लिए तर्कों की सूची आप

-7

CMake निर्माण प्रणाली है उपयोग कर सकते हैं अपने cource निर्देशिका और प्रक्षेपण के cmake की जड़ तक जाना। यह मेकफ़ाइल उत्पन्न करता है। उस पर अधिक जानकारी के लिए here देखें। लेकिन संक्षेप में आपके प्रश्न का उत्तर देने के लिए, आप cmake के साथ कॉन्फ़िगरेशन फ़ाइलों को उत्पन्न नहीं कर सकते हैं।

+2

सादा गलत, स्वीकृत उत्तर की तुलना करें। – usr1234567

0

वास्तव में, "सेट" उत्पन्न न करें, लेकिन आप उन कार्यों का उपयोग कर सकते हैं जो वे करते हैं, जैसा कि वेरफ़ाकाओ डेटा प्रकार, वेरिफ़ायर हेडर और अधिक के मामले में होता है।

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

यहाँ: enter link description here

चेक भी/deps/cmake फ़ोल्डर हमें द्वारा बनाई कार्यों को देखने के लिए।

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