के साथ मिश्रण सी और सी ++ हम मुख्य रूप से C
में एक आवेदन लिखते हैं लेकिन कुछ उप-मॉड्यूल C++
(लिनक्स पर) में लिखे गए हैं। समस्या यह है कि कुछ उपनिर्देशिकाओं और gcc
के लिए g++
का उपयोग करने के लिए CMakeLists.txt
फ़ाइलों को कैसे लिखना है।सीएमकेई
सीएमकेई
उत्तर
संकलक और लिंकर आमतौर पर फ़ाइल एक्सटेंशन द्वारा निर्धारित किया जाता है यदि अन्यथा सेट नहीं किया गया हो। इसलिए जब तक फ़ाइल के अंत ठीक होते हैं, तब तक आपका कोड संकलित और सही कंपाइलर से जुड़ा होता है।
एक तरफ ध्यान दें, यदि आप सी और सी ++ मिश्रण करते हैं, तो सही बाहरी सी घोषणाएं करना याद रखें।
जी ++ और जीसीसी के बीच का अंतर मूल रूप से है कि g ++ passes -lstdC++ लिंकर को पास करता है। सी ++ मानक पुस्तकालय को सी ++ मॉड्यूल की स्पष्ट निर्भरता के रूप में जोड़ें।
स्पष्ट होने के लिए, जीसीसी सी ++ कोड संकलित कर सकता है। इस संबंध में जीसीसी और जी ++ समान हैं। अंतर केवल तभी होता है जब g ++ का उपयोग करते समय आपको libstdC++ से लिंक करने के लिए संकलक को स्पष्ट रूप से बताना नहीं है।
धन्यवाद, मैंने प्रश्न को फिर से लिखा है। यह हिस्सा ठीक है, लेकिन मैं जानना चाहता हूं कि विशिष्ट उप-निर्देशिकाओं के लिए जीसीसी/जी ++ कैसे निर्दिष्ट करें। – Cartesius00
कुछ उप निर्देशिकाओं पर g ++ का उपयोग करने की क्या आवश्यकता है यदि आप केवल जीसीसी का उपयोग कर सकते हैं और जब आवश्यक हो तो libstdC++ पर स्पष्ट रूप से निर्भर हो सकते हैं? – bames53
हमें कुछ मौजूदा सी और सी ++ कोड मिश्रण करना होगा। – Cartesius00
आप अपनी स्रोत फ़ाइलों की LANGUAGE संपत्ति को "CXX" पर सेट कर सकते हैं। documentation देखें।
सीएमके स्वचालित रूप से ऐसा करता है। आप स्वतंत्र रूप से फ़ाइलों के दोनों प्रकार के मिश्रित कर सकते हैं अपने CMakeLists.txt फ़ाइल में:
. . .
add_executable(
my_program
code.cpp
more_code.c
)
मैं यह सब समय करते हैं और यह सिर्फ काम करता है।
ध्यान दें कि आपको सी-हेडर गार्ड की आवश्यकता है। तो code.cpp में आप 'बाहरी "सी" {#include "more_code.h"} कहेंगे – Unapiedra
- 1. सीएमकेई
- 2. सीएमकेई स्ट्रिंग विकल्प
- 3. सीएमकेई: लाइब्रेरी बनाएं और इसके खिलाफ लिंक
- 4. त्रुटि उत्पन्न करने के लिए सीएमकेई का कारण
- 5. डीएमयूजी और रिलीज लाइब्रेरी सीएमकेई (विज़ुअल स्टूडियो) के साथ लिंकिंग
- 6. सीएमकेई के साथ सूची में स्ट्रिंग को विभाजित करने का आम तरीका क्या है?
- 7. सीएमकेई: एक फ़ंक्शन के भीतर एक सूची बनाना और बनाना - निर्देशिका, या वैश्विक दायरे के साथ
- 8. आरटी-लाइब्रेरी
- 9. सेमीके कमांड सिंटैक्स प्रश्न
- 10. मैं सीएमएक में cuda_compile_ptx के आउटपुट फ़ाइल नाम को कैसे बदलूं?
- 11. जावा की कौन सी विशेषताओं ने तुलनीय सी ++ प्रोग्राम की तुलना में बहुत तेज़ी से निर्माण करने की अनुमति दी है?
- 12. जो लिनक्स के अनुरूप है? जीएनयू बनाम सेमीकेक बनाम कोडब्लॉक्स बनाम qmake
- 13. सीएमके: CMakeLists.txt
- 14. CMake अनदेखी CMAKE_BUILD_TYPE = डिबग
- 15. पीडीबी फाइलें cmake इंस्टॉल
- 16. सी ++
- 17. प्रोग्रामिंग प्रलेखन को तेजी से कूदने के लिए कोई भी अच्छा टूल
"अन्यथा सेट नहीं होने पर" चुना गया है, यानी 'CMakeLists.txt' के शीर्ष पर, 'प्रोजेक्ट (myproject)' का उपयोग करने के बजाय 'परियोजना (myproject सी)'। – congusbongus