उन त्रुटि संदेश
CMake Error at ... (project):
No CMAKE_C_COMPILER could be found.
-- Configuring incomplete, errors occurred!
See also ".../CMakeFiles/CMakeOutput.log".
See also ".../CMakeFiles/CMakeError.log".
या
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.
Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
...
-- Configuring incomplete, errors occurred!
बस इसका मतलब है कि एक साधारण परीक्षण कार्यक्रम को संकलित करने के लिए सीएमके आपके सी / सीएक्सएक्स कंपाइलर को खोजने में असमर्थ था (सीएमके आपके निर्माण पर्यावरण का पता लगाने के दौरान पहली चीजों में से एक है)।
आपकी समस्या का पता लगाने के चरण उस बिल्ड वातावरण पर निर्भर करते हैं, जिसे आप उत्पन्न करना चाहते हैं। निम्नलिखित ट्यूटोरियल स्टैक ओवरफ्लो और Microsoft Windows 7/8/10 और Ubuntu 14.04 पर CMake के साथ मेरे अपने कुछ अनुभवों के जवाब का एक संग्रह है।
पूर्व शर्त
- आपने कंपाइलर / आईडीई स्थापित किया है और यह किसी भी अन्य प्रोग्राम को संकलित करने में सक्षम है (सीधे सीएमके बिना)
- आपके पास नवीनतम CMake संस्करण है
- आपके पास उस ड्राइव पर एक्सेस अधिकार है जिसे आप सीएमके को अपने बिल्ड पर्यावरण को उत्पन्न करना चाहते हैं
आपके पास एक क्लीन बिल्ड डायरेक्टरी है (क्योंकि सीएमके आखिरी कोशिश से कैश चीजें करते हैं) जैसे कि आपके सोर्स ट्री की सब-डायरेक्टरी
विंडोज cmd.exe
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
बैश खोल
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
और सुनिश्चित करें कि आपका कमांड शेल आपके नए बनाए गए बाइनरी आउटपुट डायरेक्टरी को इंगित करता है।
सामान्य चीजें जो आप कर सकते हैं / कोशिश करनी चाहिए
क्या CMake किसी भी / आपके डिफ़ॉल्ट कंपाइलर को ढूंढने और चलाने में सक्षम है? बिना जनरेटर दिए चलाएं
> cmake ..
-- Building for: Visual Studio 14 2015
...
बिल्कुल सही अगर यह सही ढंग से जनरेटर का उपयोग करने के लिए निर्धारित करता है - जैसे यहां Visual Studio 14 2015
ऐसा क्या था जो वास्तव में विफल हो गया?
पिछली बिल्ड आउटपुट डायरेक्टरी में CMakeFiles\CMakeError.log
किसी भी त्रुटि संदेश के लिए देखें जो आपको समझ में आता है या उत्पन्न परीक्षण परियोजना को खोलने / संकलित करने का प्रयास करता है CMakeFiles\[Version]\CompilerIdC
। CompilerIdCXX
सीधे कमांड लाइन से (जैसा कि त्रुटि लॉग में पाया जाता है)।
CMake विज़ुअल स्टूडियो नहीं पा सकता है
सही जनरेटर संस्करण का चयन करने का प्रयास करें :
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
यदि वह मदद नहीं करता है, तो पहले Visual Studio वातावरण चर सेट करने का प्रयास करें (पथ भिन्न हो सकता है):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
या / / ( संकेत के लिए @Antwane पर धन्यवाद ) के Developer Command Prompt for VS2015
तहत अपने विंडोज स्टार्ट मेनू में शॉर्ट-कट का उपयोग करें ।All Programs
Visual Studio 2015
Visual Studio Tools
पृष्ठभूमि : CMake सभी विज़ुअल स्टूडियो रिलीज़ और फ़्लेवर (एक्सप्रेस, कम्युनिटी, प्रोफेशनल, प्रीमियम, टेस्ट, टीम, एंटरप्राइज, अल्टीमेट, आदि) का समर्थन करता है। संकलक के स्थान का निर्धारण करने के लिए यह रजिस्ट्री (जैसे पर HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
), सिस्टम पर्यावरण चर और - यदि कोई अन्य किसी चीज के साथ नहीं आया, तो खोज के संयोजन का उपयोग करता है - स्पष्ट रूप से संकलक को कॉल करने का प्रयास करें।
CMake GCC (MinGW / MSys) नहीं पा सकता
आप MSys bash
शेल को शुरू करते हैं msys.bat
और सीधे कॉल करने का प्रयास करते हैंgcc
$ gcc
gcc.exe: fatal error: no input files
compilation terminated.
यहाँ यह पाया गया gcc
और शिकायत कर रहा है कि मैंने इसके साथ काम करने के लिए कोई पैरामीटर नहीं दिया है।
तो निम्नलिखित काम करना चाहिए:
$ cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ make
यदि जीसीसी को export PATH=...
आपके संकलक पथ को जोड़ने के लिए कॉल नहीं मिला था (देखें सीएमके स्क्रिप्ट में पैठ पर्यावरण चर कैसे सेट करें? ) और फिर से प्रयास करें।
यदि यह अभी भी काम नहीं कर रहा है, तो CXX
संकलक पथ को सीधे निर्यात करके सेट करने का प्रयास करें (पथ भिन्न हो सकता है)
$ export CC=/c/MinGW/bin/gcc.exe
$ export CXX=/c/MinGW/bin/g++.exe
$ cmake -G "MinGW Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ mingw32-make
अधिक जानकारी के लिए सीएमके के लिए नया जीसीसी पथ निर्दिष्ट करने का तरीका देखें
नोट : "मिनगव मेकफाइल्स" जनरेटर का उपयोग करते समय आपको mingw32-make
मिनगव के साथ वितरित कार्यक्रम का उपयोग करना होगा
अभी भी काम नहीं कर रहा है? वह अजीब है। कृपया सुनिश्चित करें कि संकलक वहां है और उसके पास निष्पादन योग्य अधिकार हैं (ऊपर दिए गए पूर्ववर्ती अध्याय भी देखें)।
अन्यथा CMake का अंतिम उपाय किसी भी संकलक की खोज करने की कोशिश न करना और सीधे सीधे CMake के आंतरिक चर को सेट करना है
$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
अधिक जानकारी के लिए, Cmake सम्मान नहीं करता है देखें -D CMAKE_CXX_COMPILER = g ++ और Cmake सेटिंग सेटिंग बॉयलर
वैकल्पिक रूप से उन चरों cmake-gui.exe
को विंडोज पर भी सेट किया जा सकता है । देखें Cmake संकलक नहीं ढूँढ सकता
बैकग्राउंड : विजुअल स्टूडियो की तरह ही। CMake सभी प्रकार के GCC फ्लेवर का समर्थन करता है। यह पर्यावरण चर (CC, CXX, आदि) की खोज करता है या बस संकलक को कॉल करने की कोशिश करता है। यह इसके अलावा किसी भी उपसर्ग (जब की पहचान करेगा पार संकलन ) और कोशिश करता जीएनयू संकलक toolchain के सभी binutils में जोड़ने के लिए ( ar
, ranlib
, strip
, ld
, nm
, objdump
, और objcopy
)।