2011-10-07 15 views
8

मैंने एक प्रोजेक्ट पर काम किया है जहां मैं सी + में समाप्त होने वाली फ़ाइलों में सी कोड संकलित करने के लिए जी ++ का उपयोग कर रहा था। कारण यह है कि मुझे बताया गया है कि g ++ में बेहतर चेतावनी संदेश हैं।सी फाइलों को संकलित करने के लिए सी ++ का उपयोग कर सकते हैं?

मैं इस परियोजना CMake का उपयोग करने के लिए निर्माण प्रक्रिया स्विचिंग कर रहा हूँ। मैंने पाया कि शुरुआत में सीएमके सी फाइलों को संकलित करने के लिए जीसीसी का उपयोग करना चाहता था। यह उपयोग समय पर चर घोषित करने जैसी चीजों के कारण विफल रहा। तो मैं जी ++ उपयोग करने के लिए CMakeLists.txt फाइल में स्थापित करने

set(CMAKE_C_COMPILER_INIT g++) 

का उपयोग करके सी फ़ाइलों को संकलित करने की कोशिश की। लेकिन यह त्रुटि संदेश में परिणाम है: इस समस्या को दूर करने के लिए सीपीपी को

#error "The CMAKE_C_COMPILER is set to a C++ compiler" 

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

+1

- और क्या आप इसकी पुष्टि कर सकते हैं? मैं कहूंगा कि यह बहुत संदिग्ध है, क्योंकि (जहां तक ​​मुझे पता है) दोनों ही अलग-अलग तर्कों (भाषा, पथ शामिल हैं, मानक पुस्तकालय में शामिल इत्यादि) के साथ एक ही कंपाइलर का आह्वान करने वाले ड्राइवर हैं, इसके अलावा, जी ++ एक नहीं है सी संकलक ताकि आप बहुत खराब सी ++ लिखना समाप्त कर सकें। – delnan

+0

यदि आप सी लिख रहे हैं, तो एक सी संकलक के साथ संकलित करें। सी और सी ++ एक ही बात नहीं हैं। – Kusalananda

+0

आपने कहा '_This उपयोग समय पर चर घोषित करने जैसी चीजों के कारण विफल रहा'; ऐसा लगता है कि आप सी 99 मोड के बजाय सी 8 9 मोड में जीसीसी का उपयोग कर रहे हैं। सी संकलक को '-std = c99' जोड़ने का प्रयास करें - किसी भी तरह। टिप्पणियों के लिए –

उत्तर

21

आप इस उद्देश्य के लिए संकलक पर हावी नहीं होना चाहिए। क्या तुम सच में सी के रूप में अपने सी फ़ाइलों को संकलित करने की जरूरत है ++ तो आप cmake कि आपकी फ़ाइलों C++ भाषा के हैं सिखाना चाहिए: "। कारण मुझे बताया रहा है कि कि जी ++ बेहतर चेतावनी संदेश है कि"

set_source_files_properties(filename.c PROPERTIES LANGUAGE CXX) 
+0

ऐसा लगता है कि मैं जो करना चाहता था वह सबसे अच्छा विचार नहीं है और मुझे फ़ाइलों को .cpp में बदलना चाहिए। लेकिन एक सही उत्तर के लिए धन्यवाद यह जानने के लिए उपयोगी है कि मैं वास्तव में जरूरी घटना में क्या करना चाहता था। –

+0

कोई विचार यह है कि मेरे प्रोजेक्ट में एक फ़ाइल में इसे लागू करने से परियोजना में सभी फाइलें सी ++ के रूप में संकलित की जाएंगी? मेरे पास .c फाइलों का एक गुच्छा है और मैं केवल सी ++ के रूप में संकलित होना चाहता हूं। – Scorpio

+1

@ सर्पियो, मैं वास्तव में उस लक्षण को चाहता हूं, लेकिन एक परिभाषित तरीके से ... क्यों सीएमके को सभी .c फाइलों को सी ++ के रूप में संकलित करने का कोई तरीका नहीं है? – kchoi

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

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