CMake को विजुअल C ++ कंपाइलर नहीं मिलता है


118

Visual Studio 2015 को स्थापित करने और पिछले प्रोजेक्ट पर CMake चलाने के बाद, CMake त्रुटियों ने कहा कि यह C कंपाइलर नहीं खोज सका।

The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

मैं cl.exeविज़ुअल स्टूडियो फ़ोल्डर में खोज कर रहा था C:\Program Files\Microsoft Visual Studio 14.0, और वह नहीं मिला।

मैं Visual Studio 2015 के साथ Windows पर काम करने के लिए CMake कैसे सेट करूँ?


1
हो सकता है कि 2015 की स्थापना का रास्ता सीएमके को उम्मीद न हो? आप कौन से संस्करण का उपयोग करते हैं? इसके अलावा, मैं CMake के विंडोज संस्करण के बारे में नहीं जानता, लेकिन यह संभव हो सकता है कि CMake PATHउस प्रोग्राम को खोजने के लिए दिखे जिसकी उसे जरूरत है, इसलिए यदि इसे अपडेट नहीं किया गया तो यह कंपाइलर को नहीं मिल सकता है।
कुछ प्रोग्रामर ने

1
मैं cmake संस्करण 3.2.3 का उपयोग कर रहा हूं, जो विज़ुअल स्टूडियो 2015 के लिए समर्थन का दावा करता है
अशर

1
संस्करण 3.2.x का उपयोग करें, मुझे यह समस्या तब हुई जब मैं VS2015 से पहले Cmake स्थापित करता हूं, इसलिए cmake को पुन: स्थापित करें मेरे लिए इसे ठीक करें
Andiana

कभी-कभी आप सिर्फ अपने कंप्यूटर को रिबूट करना भूल जाते हैं, या विजुअल स्टूडियो इंस्टॉलेशन या अपडेट के बाद नहीं करना चाहते हैं। उस स्थिति में, CMake आपके कंपाइलर को नहीं ढूंढेगा।
नोकी

जवाबों:


124

मैंने इसका हल ढूंढ लिया है। जबकि Visual Studio IDE सफलतापूर्वक स्थापित किया गया था, उसने कोई बिल्ड टूल स्थापित नहीं किया था और इसलिए C ++ कंपाइलर को स्थापित नहीं किया था।

Visual Studio 2015 GUI I में C ++ प्रोजेक्ट को मैन्युअल रूप से बनाने का प्रयास करके मैं इसे C ++ पैकेज डाउनलोड करने के लिए संकेत देने में सक्षम था। CMake तब किसी भी कठिनाई के बिना संकलक को खोजने में सक्षम था।


2
कूल, इस जवाब ने मुझे सुराग दिया। C ++ घटकों और समस्या को हल करने के लिए मैं अपने VS2015 आईएसओ का उपयोग करता हूं।
पीटर लिआंग

मैं भी VS2015 आईएसओ का उपयोग कर स्थापित किया है और यह केवल मूल vb / c # भागों को स्थापित किया है। अन्य सी ++ सामान को संशोधित करने और स्थापित करने के लिए फिर से आईएसओ लॉन्च करना पड़ा।
अभिनव गोदियाल

2
वास्तव में जो पैकेज / घटक / सामान आप लोग स्थापित करते हैं? मैंने एक दृश्य C ++ / Win32Project बनाया, और इसने दो घटक स्थापित किए, और वीएस के अंदर ओके भाग गया, लेकिन सेमीक ने पहले की तरह ही शिकायत की। धन्यवाद। -S
ssimm

यह बहुत अच्छा है!
user2434741

2
यह बनाम 2017 के साथ भी काम किया है - क्या अजीब बात है! टिप के लिए धन्यवाद, दोस्त!
स्टीव होर्वाथ

36

यहाँ समाधान है कि मेरे लिए काम किया है:

  1. Visual Studio कमांड प्रॉम्प्ट टूल (एक व्यवस्थापक के रूप में) खोलें। विंडोज़ 10 पर इसे 'डेवलपर कमांड प्रॉम्प्ट' कहा जा सकता है।
  2. आपके पास सीएमके निष्पादन योग्य है, जहां पर नेविगेट करें
  3. Cmake.exe चलाएं
  4. बिल्ड और स्रोत फ़ोल्डर का चयन करने के लिए सामान्य रूप से आगे बढ़ें
  5. उपयुक्त Visual Studio कंपाइलर का चयन करें और कॉन्फ़िगर बटन दबाएं

उम्मीद है कि यह समस्याओं के बिना चलना चाहिए।


3
मुझे नहीं लगता है कि आपको प्रशासक के रूप में वीएस कमांड प्रॉम्प्ट चलाने की आवश्यकता है। लेकिन वीएस कमांड प्रोम्ट चलाने से सब कुछ ठीक हो जाता है। इस बात पर निर्भर करता है कि आपने CMake कैसे स्थापित किया है (चाहे आप इसे रास्ते पर रखें) आप अपनी बिल्ड डायरेक्टरी में नेविगेट कर सकते हैं और cmake ..वहां से भाग सकते हैं। वैसे भी अपवित्र है, क्योंकि उदाहरण के लिए गिट-बैश टर्मिनल अपने रास्ते पर सब कुछ नहीं करता है। इससे मुझे मदद मिली!
hetepeperfan

1
यह समाधान की तुलना में एक समाधान की तरह अधिक लगता है, सामान्य रूप से, आईडीई जनरेटर को विभिन्न पर्यावरण चर की आवश्यकता नहीं होती है जैसा कि देव कमांड प्रॉम्प्ट सेट में पाया जाता है (आपको केवल आवश्यकता होगी कि यदि आप मेकफाइल जनरेटर या इसी तरह का उपयोग कर रहे थे, जैसे कि निंजा के रूप में)
रयान Pavlik

2
अद्यतन: विंडोज 10 पर इसे डेवलपर कमांड प्रॉम्प्ट
मैटिजन्स

2
बहुत ही अजीब व्याख्या: 1: इसे वीएस स्टूडियो कमांड प्रॉम्प्ट 2 नहीं कहा जाता है: "नेविगेट करें", आपका मतलब "सीडी" कमांड का उपयोग करना है? 3: आपका मतलब है, cmake-gui चलाते हैं? जैसा कि आप चरण 5 में बटन 4 पर "क्लिक" करने के लिए कहते हैं: आगे बढ़ें ?? आप का मतलब भरें? 5: कॉन्फ़िगर विंडो में ड्रॉपडाउन बॉक्स पर, मैं VS कंपाइलर का चयन कर सकता हूं, लेकिन फिर भी C & C ++ कंपाइलर अज्ञात हैं ...
DrumM

1
Btw, बस खोज cmake में टाइप करें और आप
बजे

31

मैंने CMakeError.log फ़ाइल में देखा और उसके बारे में एक त्रुटि पाई cannot run 'rc.exe'

मैंने खोजा और इस जवाब को RC.Exe और RcDll को कॉपी करने के लिए पाया । Microsoft SDKs बिन से VC बिन में, और फिर CMake ने काम किया।


संपादित करें: किसी अन्य प्रश्न का शीर्ष उत्तर बताता है कि यह एक PATH समस्या है, इसलिए यह सुनिश्चित करने के लिए पर्याप्त हो सकता है कि Microsoft SDK बिन आपके PATH में है।


15

सुनिश्चित करें कि आप जनरेटर में विज़ुअल स्टूडियो के सही संस्करण का उपयोग कर रहे हैं। जब Visual Studio 14 स्थापित किया गया था तब मैंने गलत तरीके से Visual Studio 15 का चयन किया था।


3
मेरी भी यही समस्या थी। यह भ्रामक है क्योंकि विज़ुअल स्टूडियो 2015 संस्करण 14 है!
पॉल विन्टज

4
ध्यान दें कि VS का संस्करण बदलने के लिए आपको अपना कैश हटाना पड़ सकता है। ऐसा करने के लिए, फ़ाइल> कैश हटाएँ पर क्लिक करें।
पॉल विन्टज

यह मदद की ... अपने सबसे अच्छे संस्करण!
नोएल विडमर

arrrrg, @PaulWintz आपको उस अनुस्मारक के लिए धन्यवाद देता है। मुझे लगता है कि मेरे मामले में मैं एक साफ cmake कैश के साथ cmake भाग गया था, लेकिन जब VisualStudio एक वीएस अपडेट को पूरा करने के लिए कंप्यूटर को पुनरारंभ करने के लिए मेरा इंतजार कर रहा था, और फिर cmake ने खराब स्थिति को चतुराई से कैश किया।
ओरियन एल्जेनिल

13

विजुअल स्टूडियो 2017 पर इसके साथ ठोकर खाने वालों: सीएमके से संबंधित एक सुविधा है जिसे संबंधित संकलक टूलसेट के साथ चयनित और स्थापित करने की आवश्यकता है। नीचे स्क्रीनशॉट देखें।

सीमेक के लिए वीजा सी ++ उपकरण स्थापित किया जाना चाहिए


2015 संस्करण के बारे में क्या? मुझे यह इंस्टॉलेशन 2015 की स्थापना में नहीं मिला। 2017 को अपडेट करने के लिए एक समाधान हो सकता है ...
DrumM

1
@ ड्रेम, यह विशेष रूप से विज़ुअल स्टूडियो 2017 के लिए है। मुझे विश्वास नहीं है कि यह फीचर VS 2015 में मौजूद है
वादिम बरमान

क्या आप सुनिश्चित हैं कि यह आवश्यक है? क्या यह केवल विजुअल स्टूडियो के भीतर से CMake का उपयोग करने के लिए नहीं है?
पीटर मोर्टेंसन

@PeterMortensen: इसने मेरे लिए इस मुद्दे को हल कर दिया। दोबारा, विजुअल स्टूडियो 2017.
वादिम बर्मन

9

यदि उपरोक्त में से कोई भी समाधान काम नहीं करता है, तो रुकें और एक स्वच्छता जांच करें।

मैं गलत -G <config>स्ट्रिंग का उपयोग करके जल गया और इसने मुझे यह भ्रामक त्रुटि दी।

सबसे पहले, वी.एस. कमांड प्रॉम्प्ट से चलाया नहीं नियमित रूप से कमांड प्रॉम्प्ट। आप इसे Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015वी.एस. टूल आदि के सभी सही रास्तों पर सेट कर सकते हैं ।

अब देखिए कि सीमेट से क्या जनरेटर उपलब्ध हैं ...

cmake -help

...<snip>... The following generators are available on this platform: Visual Studio 15 [arch] = Generates Visual Studio 15 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. Optional [arch] can be "Win64" or "IA64". ...

फिर [कट्टर] जोड़ा के साथ उपयुक्त स्ट्रिंग चुना ।

mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

एक उपनिर्देशिका में cmake चलाने के लिए एक 'साफ' करना आसान हो जाता है क्योंकि आप उस निर्देशिका में सब कुछ हटा सकते हैं।

मैंने विजुअल स्टूडियो 15 में अपग्रेड किया लेकिन ध्यान नहीं दे रहा था और 2012 के लिए जनरेट करने की कोशिश कर रहा था।


7

मेरे लिए, मैंने CMakeError.logफ़ाइल चेक की और पाया:

[...] त्रुटि MSB8036: विंडोज एसडीके संस्करण 8.1 नहीं मिला। विंडोज एसडीके के आवश्यक संस्करण को स्थापित करें या प्रोजेक्ट संपत्ति पृष्ठों में या समाधान पर राइट-क्लिक करके और "रिटारगेट समाधान" का चयन करके एसडीके संस्करण को बदल दें।

यह विंडोज 7 पर विजुअल स्टूडियो 2017 का उपयोग करने के बावजूद है। इसलिए ऐसा प्रतीत होता है कि सीएमके विंडोज 8.1 एसडीके के साथ अपनी पहचान परियोजना का निर्माण करने की कोशिश कर रहा है।

मैंने उस घटक को जोड़ने के लिए विज़ुअल स्टूडियो इंस्टॉलर का उपयोग किया और अब सीएमके क्लैम के रूप में खुश है।


4

मेनू → विज़ुअल स्टूडियो 2015 → MSBuild कमांड विजुअल स्टूडियो 2015 के लिए प्रॉम्प्ट। तब CMake मिल सकता है cl.exe

set PATH="c:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\";%PATH%

अपने Windows SDK को स्थापित करने के लिए ऊपरी पथ बदलें।

CMake पा सकते हैं rc.exe

करने के लिए सीडी CMakeLists.txtऔर करो:

md .build
cd .build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release
cmake --build .

बाद -Gमें सीएमके द्वारा प्राप्त किया जाना चाहिए। का उपयोग करें --help; आपके पास जनरेटर हो सकता है या नहीं।


जब आपके पास msvc 2015 और 2017 स्थापित है, और msvc 2015 के साथ निर्माण करने की कोशिश कर रहा है, तो यह vs2015 कमांड-प्रॉम्प्ट को चलाने के दौरान 10.0 एसडीके को स्वचालित करेगा। आप इस तरह कमांडलाइन-पैरामीटर के अंत में जोड़कर 8.1 एसडीके को मजबूर करने के लिए "VS2015 x64 मूल उपकरण कमांड प्रॉम्प्ट" को संशोधित करके एसडीके-संस्करण निर्दिष्ट कर सकते हैं; "% comspec% / k" "C: \ Program Files (x86) \ msdev2015 \ VC \ vcvarsall.bat" "amd64 8.1"
kalmiya

क्या मुझे 'MSBuild Command Prompt for Visual Studio 2015' स्थापित करना है? मैंने msvc 2017 स्थापित किया, लेकिन दृश्य स्टूडियो के लिए कमांड प्रॉम्प्ट नहीं है।
मीना

2

मैं एक ही मुद्दे में भाग गया और विज़ुअल स्टूडियो स्थापित को पुन: लॉन्च करके और निम्न विकल्प की जाँच करके इसे ठीक किया:

Windows and Web Development/ Universal Windows App Development Tools/Windows 10 SDK

इसमें अधिकांश अनुप्रयोगों में उपयोग किए जाने वाले मानक C ++ हेडर शामिल हैं और इसलिए इसे भी स्थापित करना अक्सर आवश्यक होता है।


2

विजुअल स्टूडियो 2015 प्रोफेशनल का उपयोग करते समय मेरे पास विंडोज 10 के तहत यह मुद्दा था, जबकि विजुअल स्टूडियो 2015 एक्सप्रेस ने काम किया! विंडोज 7 के तहत, दोनों विजुअल स्टूडियो संस्करण काम करते थे।

विजुअल स्टूडियो 2015 व्यावसायिक आईडीई से बनाई गई नई परियोजनाएं सफलतापूर्वक संकलित करती हैं, लेकिन सीमेक संकलक रिपोर्टिंग को खोजने में विफल रहेगा:

The C compiler identification is unknown
The CXX compiler identification is unknown

मैंने 3.4.1 से 3.11.4 तक सीएमके को अपग्रेड किया, और अब समस्या दूर हो गई है।



1

मुझे सीएमके के माध्यम से उत्पन्न विजुअल स्टूडियो 2017 परियोजना के साथ एक समान समस्या थी। C ++ के साथ डेस्कटॉप डेवलपमेंट में Visual Studio स्थापित करते समय कुछ पैकेज गायब थे। स्नैपशॉट देखें:

विजुअल स्टूडियो 2017 पैकेज:

Visual Studio2017 पैकेज

इसके अलावा, सीएमके को नवीनतम संस्करण में अपग्रेड करें।


0

मेरे मामले में एक पर्यावरण चर सेट था जो इस त्रुटि का कारण था। पर्यावरण चर से cxx_flags हटाने के बाद समस्या हल हो गई थी।


0

विजुअल स्टूडियो 2017 के अपडेट के बाद मुझे सीएमके 3.12.1 के साथ यह समस्या हुई। मैंने बस सीएमके को फिर से चलाया और यह काम किया।


0

मेरे मामले में मैं देख सकता था CMakeError.logकि सीएमके को विंडोज एसडीके ( MSB8003: Could not find WindowsSDKDir variable from the registry) नहीं मिल सकता है ।

संस्करण का उपयोग कर पहले CMake चलाने पर कमांडलाइन पर निर्दिष्ट किया जा सकता है:

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

मैं इसे स्थापित करने के बाद आगे बढ़ा, लेकिन मैंने बाद में और अधिक मुद्दों को मारा (इसलिए मुझे लगता है कि मेरे पर्यावरण को किसी तरह गड़बड़ कर दिया गया है), लेकिन शायद यह इस मुद्दे के साथ किसी को मदद करेगा।


0

सुझावों की एक जोड़ी:

  • 'उन्नत' की जाँच करके और CMAKE_LINKER और CMAKE_MAKE_PROGRAM को संशोधित करके पथ को मैन्युअल रूप से सेट करने का प्रयास करें
  • कैश हटाएं - सीएमके में GUI के साथ जाएं: फ़ाइल → कैश हटाएँ।

मेरी समस्या पहले कहा गया संयोजन था: मैंने संकलक संस्करण को 14 के बजाय 15 पर सेट किया है और सही होने पर, मुझे कैश को हटाना पड़ा।

मैंने एक प्रशासक के रूप में विजुअल स्टूडियो कमांड प्रॉम्प्ट भी शुरू किया और वहाँ से मैंने cmake-gui.exe चलाया

फिर सब कुछ वैसा ही काम किया जैसा कि करना चाहिए था।


0

मेरे मामले में मुद्दा यह था कि मूल परियोजना, जिसके माध्यम से googletest शामिल है

add_subdirectory(gtest_dir)

के रूप में परिभाषित किया गया था

PROJECT( projname CXX )

किसी तरह सीएमके को नहीं पहचानता

PROJECT(sub_project_name CXX C)

चूंकि C कंपाइलर पैरेंट में सेट नहीं है।

मैंने उपयोग करके समस्या हल की

PROJECT( projname CXX C)

मेरी मुख्य CMakeLists.txtफाइल में।



0

पिछले समाधानों में से किसी ने भी मेरे लिए काम नहीं किया। हालाँकि मैंने देखा कि यद्यपि मैंने Visual Studio संस्करण 15 (Visual Studio 2015 के साथ भ्रमित नहीं होना) स्थापित किया था, मेरे कंप्यूटर पर बनाई गई निर्देशिका Visual Studio 14 के लिए थी।

जब मैंने विज़ुअल स्टूडियो 14 को निर्दिष्ट किया जब मैंने काम किया कॉन्फ़िगरेशन बटन दबाया।


Visual Studio के लिए संस्करण क्रमांकन सिर्फ ... विषम है। विजुअल स्टूडियो 14 रियलिटी स्टूडियो 2015 में है, कोई विजुअल स्टूडियो 2014 नहीं है। ट्रॉफीजेक का जवाब देखें stackoverflow.com/a/40332976/1319284
कुत्स्कम

0

मैंने स्टैकओवरफ्लो में यह कमी पाई और मैं मेरे लिए काम करता हूं, हालांकि अन्य सॉलेशंस काम नहीं कर रहे हैं यदि आपके पास विंडोज़ 10 ओएस है, तो निम्न चरणों को करने से समस्या ठीक हो जाएगी:

1) C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Bin पर जाएं

2) फिर इस फ़ाइल से RC.exe और RcDll की प्रतिलिपि बनाएँ

3) C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ bin पर जाएं और उन दो फाइलों को पेस्ट करें जिन्हें आपने कॉपी किया है।

सभी मुझे आशा है कि यह उपयोगी है ...


0

Cmakelists.txt में देखें यदि आपको ARM मिलते हैं तो आपको ARM के लिए C ++ और साथ ही ARM बिन फोल्डर के लिए vcvarsall.bat का उपयोग करना होगा।

यह ये पैकेज हैं:

ARM64 के लिए C ++ यूनिवर्सल विंडोज प्लेटफॉर्म "आवश्यक नहीं"

एआरएम के लिए विजुअल सी ++ कंपाइलर और लाइब्रेरी "आवश्यक नहीं"

ARM64 के लिए विजुअल C ++ कंपाइलर और लाइब्रेरी "बहुत ही आवश्यक"

Required for finding Threads on ARM 
enable_language(C) 
enable_language(CXX)

तब समस्याएं गायब हो सकती हैं:

कोई CMAKE_C_COMPILER नहीं मिल सका।

कोई CMAKE_CXX_COMPILER नहीं मिला।

यदि उपरोक्त आपकी समस्या का समाधान नहीं करता है?

वैकल्पिक रूप से आप cmakelists.txt में C और CXX के विकल्पों को हटा सकते हैं। # कहां कहां enable_language (C) है के # infront पर सेट करके। और एंड्रॉइड एआरएम प्रोसेसर संकलन से बचें।



0

मेरे पास एक संबंधित समस्या थी: दृश्य C ++ जनरेटर सूची में भी नहीं थे जब चल रहा था cmake --help

मैं where cmakeसांत्वना में भागा और पाया कि साइबरविन अपनी स्वयं की cmake.exe फ़ाइल भी प्रदान करता है , जिसका उपयोग किया जा रहा था। PATH में निर्देशिकाओं के क्रम को बदलने से समस्या ठीक हो गई।


0

CMakeErrors.log की जाँच करके CMakeFiles में लौटे:

C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \ Platforms \ x64 \ PlatformToolsets \ v140_xp \ Toolset.targets (36,5): चेतावनी IB8003: रजिस्ट्री से WindowsSdkDir_71A चर नहीं मिल सका। TargetFrameworkVersion या PlatformToolset को अमान्य संस्करण संख्या पर सेट किया जा सकता है।

त्रुटि का अर्थ है कि XP ​​(v140_xp) के लिए निर्मित उपकरण स्थापित नहीं हैं। इसे ठीक करने के लिए मैंने अलग-अलग कंपोनेंट टैब के तहत विजुअल स्टूडियो 2019 इंस्टॉलर में उचित सुविधा स्थापित की:

यहां छवि विवरण दर्ज करें


0

मेरे पास सीएमके जीयूआई और वीएस 21019 सामुदायिक संस्करण के साथ यह मुद्दा था। मुझे लगता है कि मैंने विजुअल स्टूडियो से पहले सीएमके स्थापित किया हो सकता है - निश्चित रूप से मैंने सीएमके ३.१५.२ से ३.१५.३ तक अद्यतन करने के बाद समस्या दूर हो गई।


0

नाम फ़ोल्डर की जाँच बहुत लंबा है या नहीं।


-3

क्योंकि CMake आपके Visual Studio कंपाइलर को खोजने में सक्षम नहीं है। कोई भी प्रोजेक्ट शुरू करें जो आवश्यक संकलक डाउनलोड करेगा और सीएमके को तब इसे खोजने में सक्षम होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.