ข้อความแสดงข้อผิดพลาดเหล่านั้น
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!
เพียงหมายความว่า CMake ไม่พบคอมไพเลอร์ C / CXX ของคุณเพื่อรวบรวมโปรแกรมทดสอบอย่างง่าย (หนึ่งในสิ่งแรกที่ CMake พยายามในขณะที่ตรวจจับสภาพแวดล้อมการสร้างของคุณ)
ขั้นตอนในการค้นหาปัญหาของคุณขึ้นอยู่กับสภาพแวดล้อมการสร้างที่คุณต้องการสร้าง บทช่วยสอนต่อไปนี้เป็นชุดคำตอบที่นี่ใน Stack Overflow และประสบการณ์บางส่วนของฉันกับ CMake บน Microsoft Windows 7/8/10 และ Ubuntu 14.04
เงื่อนไขเบื้องต้น
- คุณได้ติดตั้งคอมไพเลอร์ / IDE และสามารถคอมไพล์โปรแกรมอื่น ๆ ได้แล้ว (โดยไม่ต้องใช้ CMake โดยตรง)
- คุณมีCMake เวอร์ชันล่าสุด
- คุณมีสิทธิ์เข้าถึงไดรฟ์ที่คุณต้องการให้ CMake สร้างสภาพแวดล้อมการสร้างของคุณ
คุณมีไดเร็กทอรี build ที่สะอาด (เนื่องจาก CMake ทำแคชจากการลองครั้งล่าสุด) เช่นเป็นไดเร็กทอรีย่อยของแผนผังซอร์สของคุณ
Windows 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 ไม่พบ Visual Studio
ลองเลือกรุ่นเครื่องกำเนิดไฟฟ้าที่ถูกต้อง:
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
หากไม่ได้ผลให้ลองตั้งค่าตัวแปรสภาพแวดล้อม Visual Studio ก่อน (เส้นทางอาจแตกต่างกันไป):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
หรือใช้ทางDeveloper Command Prompt for VS2015
ลัดในเมนูเริ่มของ Windows ของคุณใต้All Programs
/ Visual Studio 2015
/ Visual Studio Tools
(ขอบคุณที่@Antwaneสำหรับคำใบ้)
ความเป็นมา : CMake รองรับเวอร์ชันและรสชาติของ Visual Studio ทั้งหมด (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate ฯลฯ ) ในการกำหนดตำแหน่งของคอมไพเลอร์นั้นจะใช้การค้นหารีจิสทรีร่วมกัน (เช่นที่HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
) ตัวแปรสภาพแวดล้อมของระบบและ - หากไม่มีสิ่งอื่นใดเกิดขึ้นให้ลองเรียกคอมไพเลอร์อย่างชัดเจน
CMake ไม่พบ GCC (MinGW / MSys)
คุณเริ่มbash
เชลล์MSys 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
หากไม่พบ GCC เรียกexport PATH=...
ให้เพิ่มเส้นทางคอมไพเลอร์ของคุณ (ดูวิธีตั้งค่าตัวแปรสภาพแวดล้อม PATH ในสคริปต์ CMake ) แล้วลองอีกครั้ง
หากยังใช้งานไม่ได้ให้ลองกำหนด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
สำหรับรายละเอียดเพิ่มเติมโปรดดูวิธีระบุเส้นทาง GCC ใหม่สำหรับ CMake
หมายเหตุ : เมื่อใช้เครื่องกำเนิดไฟฟ้า "MinGW Makefiles" คุณต้องใช้mingw32-make
โปรแกรมที่แจกจ่ายกับ MinGW
ยังไม่ทำงาน? แปลกแฮะ, แปลกนะ, มันแปลก ๆ นะ. โปรดตรวจสอบให้แน่ใจว่าคอมไพเลอร์อยู่ที่นั่นและมีสิทธิ์ในการปฏิบัติการ (ดูบทเงื่อนไขเบื้องต้นด้านบน)
มิฉะนั้นทางเลือกสุดท้ายของ 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
Windows ดูCmake ไม่พบคอมไพเลอร์
ความเป็นมา : เหมือนกับ Visual Studio CMake รองรับรสชาติ GCC ทุกประเภท ค้นหาตัวแปรสภาพแวดล้อม (CC, CXX และอื่น ๆ ) หรือเพียงแค่พยายามเรียกคอมไพเลอร์ นอกจากนี้จะตรวจสอบคำนำหน้าใด ๆ (เมื่อข้ามรวบรวม ) และพยายามที่จะเพิ่มเข้าไปใน binutils ทั้งหมดของ toolchain GNU คอมไพเลอร์ ( ar
, ranlib
, strip
, ld
, nm
, objdump
และobjcopy
)