CMake ไม่พบคอมไพเลอร์ Visual 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ในโฟลเดอร์ Visual Studio C:\Program Files\Microsoft Visual Studio 14.0แล้วไม่พบ

ฉันจะตั้งค่า CMake ให้ทำงานบน Windows ด้วย Visual Studio 2015 ได้อย่างไร


1
บางทีเส้นทางการติดตั้งของปี 2015 ไม่ใช่สิ่งที่ CMake คาดหวัง? คุณใช้ CMake เวอร์ชันใด นอกจากนี้ฉันไม่รู้เกี่ยวกับ CMake เวอร์ชัน Windows แต่อาจเป็นไปได้ที่ CMake PATHจะค้นหาโปรแกรมที่ต้องการดังนั้นหากไม่ได้อัปเดตก็จะไม่พบคอมไพเลอร์
โปรแกรมเมอร์บางคนบอกว่า

1
ฉันใช้ cmake เวอร์ชัน 3.2.3 ซึ่งอ้างว่ารองรับ Visual Studio 2015
Asher

1
ใช้เวอร์ชัน 3.2.x ฉันพบปัญหานี้เมื่อฉันติดตั้ง Cmake ก่อน VS2015 ดังนั้นจึงติดตั้ง cmake ใหม่เพื่อแก้ไขปัญหานี้ให้ฉัน
Andiana

บางครั้งคุณลืมที่จะรีบูตเครื่องคอมพิวเตอร์ของคุณหรือไม่ต้องการหลังจากการติดตั้งหรืออัปเดต Visual Studio ในกรณีนี้ CMake จะไม่พบคอมไพเลอร์ของคุณ
Noki

คำตอบ:


124

ฉันได้พบทางออกแล้ว แม้ว่า Visual Studio IDE จะติดตั้งสำเร็จ แต่ก็ไม่ได้ติดตั้งเครื่องมือสร้างใด ๆ ดังนั้นจึงไม่ได้ติดตั้งคอมไพเลอร์ C ++

ด้วยการพยายามสร้างโครงการ C ++ด้วยตนเองใน Visual Studio 2015 GUIฉันสามารถแจ้งให้ดาวน์โหลดแพ็คเกจ C ++ ได้ จากนั้น CMake ก็สามารถค้นหาคอมไพเลอร์ได้โดยไม่ยาก


2
เจ๋งคำตอบนี้ทำให้ฉันได้เบาะแส ฉันใช้ VS2015 ISO ของฉันเพื่อติดตั้งส่วนประกอบ C ++ และแก้ไขปัญหาได้แล้ว
Peter Liang

ฉันยังติดตั้งโดยใช้ VS2015 ISO และติดตั้งส่วน vb / c # พื้นฐานเท่านั้น ต้องเปิด ISO อีกครั้งเพื่อแก้ไขและติดตั้งสิ่ง c ++ อื่น ๆ
Abhinav Gauniyal

2
พวกคุณติดตั้งแพ็คเกจ / ส่วนประกอบ / สิ่งของใดกันแน่? ฉันสร้าง Visual C ++ / Win32Project และติดตั้งสององค์ประกอบและรันตกลงภายใน VS แต่ cmake ยังคงบ่นเหมือนเดิม ขอบคุณ -S
ssimm

ดีมาก!
user2434741

2
สิ่งนี้ได้ผลกับปี 2017 เช่นกัน - ช่างเป็นอะไรที่แปลก! ขอบคุณสำหรับเคล็ดลับเพื่อน!
Steve Horvath

36

นี่คือวิธีแก้ปัญหาที่เหมาะกับฉัน:

  1. เปิดเครื่องมือพร้อมรับคำสั่ง Visual Studio (ในฐานะผู้ดูแลระบบ) ใน windows 10 อาจเรียกว่า 'Developer command prompt'
  2. ไปที่ตำแหน่งที่คุณมีไฟล์ปฏิบัติการ CMake
  3. เรียกใช้ Cmake.exe
  4. ดำเนินการตามปกติเพื่อเลือกบิลด์และโฟลเดอร์ต้นทาง
  5. เลือกคอมไพเลอร์ Visual Studio ที่เหมาะสมและกดปุ่มกำหนดค่า

หวังว่ามันจะทำงานได้โดยไม่มีปัญหา


3
ฉันไม่คิดว่าคุณต้องเรียกใช้ VS Command prompt ในฐานะผู้ดูแลระบบ แต่การเรียกใช้คำสั่ง VS promt ทำให้ทุกสิ่งที่ cmake กำลังมองหาอยู่บนเส้นทาง ขึ้นอยู่กับวิธีที่คุณติดตั้ง CMake (ไม่ว่าคุณจะวางบนเส้นทาง) คุณยังสามารถไปที่ไดเร็กทอรีบิลด์ของคุณและเรียกใช้cmake ..จากที่นั่นได้ โหวตแล้วเพราะเทอร์มินัล git-bash ไม่ได้วางทุกอย่างไว้บนเส้นทางโดยอัตโนมัติ สิ่งนี้ช่วยฉันได้!
heteperfan

1
สิ่งนี้ดูเหมือนจะเป็นวิธีแก้ปัญหามากกว่าวิธีแก้ปัญหาเนื่องจากโดยปกติตัวสร้าง IDE ไม่ต้องการตัวแปรสภาพแวดล้อมต่างๆตามที่พบในชุดพรอมต์คำสั่ง dev (คุณต้องการสิ่งนั้นหากคุณใช้ตัวสร้าง makefile หรือสิ่งที่คล้ายกันเช่น ในฐานะนินจา)
Ryan Pavlik

2
อัปเดต: ใน Windows 10 สิ่งนี้เรียกว่าDeveloper Command Prompt
Mattijs

2
คำอธิบายที่แปลกมาก: 1: ไม่ได้เรียกว่าพรอมต์คำสั่ง VS Studio 2: "navigation" คุณหมายถึงใช้คำสั่ง "cd" หรือไม่? 3: คุณหมายถึงเรียกใช้ cmake-gui? ตามที่คุณพูดในขั้นตอนที่ 5 เพื่อ "คลิก" ที่ปุ่ม 4: ดำเนินการต่อ ?? คุณหมายถึงกรอก? 5: ในกล่องดรอปดาวน์ในหน้าต่างกำหนดค่าฉันสามารถเลือกคอมไพเลอร์ VS ได้ แต่ยังไม่ทราบคอมไพเลอร์ C & C ++ ...
DrumM

1
Btw เพียงพิมพ์ cmake ค้นหาแล้วคุณจะพบ cmake-gui
DrumM

31

ฉันดูในไฟล์ CMakeError.log และพบข้อผิดพลาดเกี่ยวกับ cannot run 'rc.exe'

ฉันค้นหาและพบคำตอบนี้เพื่อคัดลอก RC.Exe และ RcDll.Dll จากถัง Microsoft SDKs ไปยังถัง VC จากนั้น CMake ก็ทำงาน


แก้ไข: คำตอบยอดนิยมสำหรับคำถามอื่นแสดงให้เห็นว่าเป็นปัญหา PATH ดังนั้นจึงอาจเพียงพอที่จะตรวจสอบว่าถังขยะ Microsoft SDK อยู่ในเส้นทางของคุณ


15

ตรวจสอบให้แน่ใจว่าคุณใช้ Visual Studio เวอร์ชันที่ถูกต้องในเครื่องกำเนิดไฟฟ้า ฉันเลือก Visual Studio 15 ไม่ถูกต้องเมื่อติดตั้ง Visual Studio 14


3
นี่เป็นปัญหาของฉันเหมือนกัน เป็นที่สับสนเพราะ Visual Studios 2015 เป็นเวอร์ชัน 14!
Paul Wintz

4
โปรดทราบว่าคุณอาจต้องลบแคชของคุณเพื่อเปลี่ยนเวอร์ชันของ VS. ในการดำเนินการนี้ให้คลิกไฟล์> ลบแคช
Paul Wintz

สิ่งนี้ช่วย ... การกำหนดเวอร์ชันที่ดีที่สุด!
Noel Widmer

arrrrg, @PaulWintz ขอบคุณสำหรับคำเตือนนั้น ฉันคิดว่าในกรณีของฉันฉันใช้ cmake ด้วยแคช cmake ที่สะอาด แต่ในขณะที่ VisualStudio กำลังรอให้ฉันรีสตาร์ทคอมพิวเตอร์เพื่อทำการอัปเดต VS ให้เสร็จสิ้นจากนั้น cmake ก็แคชสถานการณ์ที่ไม่ดีอย่างชาญฉลาด
orion elenzil

13

สิ่งที่สะดุดกับสิ่งนี้ใน Visual Studio 2017: มีคุณลักษณะที่เกี่ยวข้องกับ CMake ที่ต้องเลือกและติดตั้งร่วมกับชุดเครื่องมือคอมไพเลอร์ที่เกี่ยวข้อง ดูภาพหน้าจอด้านล่าง

ต้องติดตั้งเครื่องมือ Visaul C ++ สำหรับ CMake


แล้วเวอร์ชัน 2015 ล่ะ? ฉันไม่พบช่องทำเครื่องหมายนี้ในการติดตั้งปี 2015 ทางออกหนึ่งคือการอัปเดตเป็น 2017 ...
DrumM

1
@DrumM นี่คือเฉพาะสำหรับ Visual Studio 2017 ฉันไม่เชื่อว่าฟีเจอร์นี้มีอยู่ใน VS 2015
Vadim Berman

แน่ใจหรือว่าจำเป็น? ไม่ใช่เฉพาะการใช้ CMake จากภายใน Visual Studio หรือไม่?
Peter Mortensen

@PeterMortensen: มันแก้ปัญหาให้ฉันได้ อีกครั้ง Visual Studio 2017
Vadim Berman

9

หากวิธีแก้ปัญหาข้างต้นไม่ได้ผลให้หยุดและทำการตรวจสอบความสมบูรณ์

ฉันถูกไฟไหม้โดยใช้-G <config>สตริงที่ไม่ถูกต้องและมันทำให้ฉันเกิดข้อผิดพลาดที่ทำให้เข้าใจผิด

ขั้นแรกให้เรียกใช้จากพรอมต์คำสั่ง VS ไม่ใช่พรอมต์คำสั่งปกติ คุณสามารถค้นหาได้ใน Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015สิ่งนี้ตั้งค่าเส้นทางที่ถูกต้องทั้งหมดไปยังเครื่องมือ VS ฯลฯ

มาดูกันว่ามีเครื่องปั่นไฟอะไรบ้างจาก cmake ...

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". ...

จากนั้นเลือกสตริงที่เหมาะสมโดยเพิ่ม [arch]

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

การเรียกใช้ cmake ในไดเร็กทอรีย่อยทำให้ 'clean' ง่ายขึ้นเนื่องจากคุณสามารถลบทุกอย่างในไดเร็กทอรีนั้นได้

ฉันอัปเกรดเป็น Visual Studio 15 แต่ไม่ได้ให้ความสนใจและพยายามสร้างสำหรับปี 2012


7

สำหรับฉันฉันตรวจสอบCMakeError.logไฟล์และพบว่า:

[... ] ข้อผิดพลาด MSB8036: ไม่พบ Windows SDK เวอร์ชัน 8.1 ติดตั้ง Windows SDK เวอร์ชันที่ต้องการหรือเปลี่ยนเวอร์ชัน SDK ในหน้าคุณสมบัติโปรเจ็กต์หรือโดยคลิกขวาที่โซลูชันแล้วเลือก "กำหนดเป้าหมายโซลูชัน"

แม้ว่าจะใช้ Visual Studio 2017 บน Windows 7 ดังนั้นดูเหมือนว่า CMake กำลังพยายามสร้างโครงการตรวจจับด้วย Windows 8.1 SDK

ฉันใช้โปรแกรมติดตั้ง Visual Studio เพื่อเพิ่มส่วนประกอบนั้นและตอนนี้ CMake ก็มีความสุขเหมือนหอย


4

เมนู→ Visual Studio 2015 → MSBuild Command Prompt สำหรับ Visual Studio 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สามารถค้นหา

cd ไปยังเส้นทางCMakeLists.txtและทำ:

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

พารามิเตอร์หลัง-Gควรถูกดึงโดย CMake ใช้--help; คุณอาจมีหรือไม่มีเครื่องกำเนิดไฟฟ้า


เมื่อคุณติดตั้ง msvc 2015 และ 2017 และพยายามสร้างด้วย msvc 2015 ระบบจะตรวจจับ 10.0 SDK โดยอัตโนมัติเมื่อเรียกใช้พรอมต์คำสั่ง vs2015 คุณสามารถระบุเวอร์ชัน SDK โดยการแก้ไข "VS2015 x64 Native Tools Command Prompt" เพื่อบังคับให้ 8.1 sdk โดยเพิ่มที่ส่วนท้ายของ commandline-parameters เช่นนี้ "% comspec% / k" "C: \ Program Files (x86) \ msdev2015 \ VC \ vcvarsall.bat" "amd64 8.1"
kalmiya

ฉันต้องติดตั้ง 'MSBuild Command Prompt for Visual Studio 2015' แยกต่างหากหรือไม่ ฉันติดตั้ง msvc 2017 แล้ว แต่ไม่มีพรอมต์คำสั่งสำหรับ Visual Studio
meen

2

ฉันพบปัญหาเดียวกันและแก้ไขโดยการเปิดใช้งานการติดตั้ง Visual Studio อีกครั้งและตรวจสอบตัวเลือกต่อไปนี้:

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

ประกอบด้วยส่วนหัว C ++ มาตรฐานที่ใช้ในแอปพลิเคชันส่วนใหญ่ดังนั้นจึงจำเป็นต้องติดตั้งด้วยเช่นกัน


2

ฉันมีปัญหานี้ใน Windows 10 เมื่อใช้ Visual Studio 2015 Professional ในขณะที่ Visual Studio 2015 Express ใช้งานได้! ภายใต้ Windows 7 Visual Studio ทั้งสองเวอร์ชันที่ใช้ในการทำงาน

โครงการใหม่ที่สร้างจาก Visual Studio 2015 Professional IDE คอมไพล์สำเร็จแล้ว แต่ CMake จะไม่พบการรายงานคอมไพเลอร์:

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

ฉันอัปเกรด CMake จาก 3.4.1 เป็น 3.11.4 และตอนนี้ปัญหาก็หายไป



1

ฉันมีปัญหาคล้ายกันกับโครงการ Visual Studio 2017 ที่สร้างผ่าน CMake แพ็กเกจบางส่วนหายไปขณะติดตั้ง Visual Studio ในการพัฒนาเดสก์ท็อปด้วย C ++ ดูภาพรวม:

แพ็คเกจ Visual Studio 2017:

แพ็คเกจ Visual Studio2017

นอกจากนี้อัปเกรด CMake เป็นเวอร์ชันล่าสุด


0

ในกรณีของฉันมีชุดตัวแปรสภาพแวดล้อมซึ่งเป็นสาเหตุของข้อผิดพลาดนี้ ปัญหาได้รับการแก้ไขหลังจากลบ cxx_flags จากตัวแปรสภาพแวดล้อม


0

ฉันพบปัญหานี้กับ CMake 3.12.1 หลังจากอัปเดต Visual Studio 2017 ฉันเพิ่งรัน CMake อีกครั้งและใช้งานได้


0

ในกรณีของฉันฉันเห็นCMakeError.logว่า CMake ไม่พบ Windows SDK ( MSB8003: Could not find WindowsSDKDir variable from the registry)

สามารถระบุเวอร์ชันได้ในบรรทัดคำสั่งบน CMake แรกที่รันโดยใช้:

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

ฉันทำได้มากขึ้นหลังจากตั้งค่านั้น แต่ฉันพบปัญหาเพิ่มเติมในภายหลัง (ดังนั้นฉันถือว่าสภาพแวดล้อมของฉันยุ่งเหยิง) แต่บางทีมันอาจจะช่วยใครบางคนเกี่ยวกับปัญหานี้


0

เคล็ดลับสองสามข้อ:

  • ลองกำหนดเส้นทางด้วยตนเองโดยเลือก "ขั้นสูง" และแก้ไข CMAKE_LINKER และ CMAKE_MAKE_PROGRAM
  • ลบแคช - ใน CMake ด้วย GUI ไปที่: ไฟล์→ลบแคช

ปัญหาของฉันคือการรวมกันของที่ระบุไว้ก่อนหน้านี้: ฉันได้ตั้งค่าเวอร์ชันคอมไพเลอร์เป็น 15 แทนที่จะเป็น 14 และเมื่อแก้ไขแล้วฉันต้องลบแคช

ฉันยังเริ่มพรอมต์คำสั่ง Visual Studio ในฐานะผู้ดูแลระบบและจากที่นั่นฉันเรียกใช้ cmake-gui.exe

จากนั้นทุกอย่างก็ทำงานตามที่ควรจะเป็น


0

ในกรณีของฉันปัญหาคือโครงการแม่ซึ่งรวมถึง googletest ผ่านทาง

add_subdirectory(gtest_dir)

ถูกกำหนดให้เป็น

PROJECT( projname CXX )

อย่างไรก็ตาม CMake ไม่รู้จัก

PROJECT(sub_project_name CXX C)

เนื่องจากไม่ได้ตั้งค่าคอมไพเลอร์ C ในพาเรนต์

ฉันแก้ไขปัญหาโดยใช้

PROJECT( projname CXX C)

ในCMakeLists.txtไฟล์หลักของฉัน



0

ไม่มีวิธีแก้ไขปัญหาก่อนหน้านี้สำหรับฉัน อย่างไรก็ตามฉันสังเกตเห็นว่าแม้ว่าฉันจะติดตั้ง Visual Studio เวอร์ชัน 15 (เพื่อไม่ให้สับสนกับ Visual Studio 2015) ไดเร็กทอรีที่สร้างบนคอมพิวเตอร์ของฉันเป็นของ Visual Studio 14

เมื่อฉันระบุ Visual Studio 14 เมื่อฉันกดปุ่มกำหนดค่ามันใช้งานได้


หมายเลขเวอร์ชันสำหรับ Visual Studio เป็นเพียง ... แปลก Visual Studio 14 ในความเป็นจริง Visual Studio 2015 ไม่มี Visual Studio 2014 ดูคำตอบของ trophygeek stackoverflow.com/a/40332976/1319284
kutschkem

0

ฉันพบการละลายนี้ที่ stackoverflow และฉันทำงานให้ฉันแม้ว่าจะไม่ทำงานการละลายอื่น ๆ หากคุณมีระบบปฏิบัติการ windows 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 คุณต้องติดตั้ง C ++ สำหรับ ARM และใช้ vcvarsall.bat สำหรับโฟลเดอร์ ARM bin

เป็นแพ็คเกจเหล่านี้:

C ++ Universal Windows Platform สำหรับ ARM64 "ไม่จำเป็น"

Visual C ++ คอมไพเลอร์และไลบรารีสำหรับ ARM "ไม่จำเป็น"

Visual C ++ คอมไพเลอร์และไลบรารีสำหรับ ARM64 "ต้องการมาก"

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

จากนั้นปัญหาอาจหายไป:

ไม่พบ CMAKE_C_COMPILER

ไม่พบ CMAKE_CXX_COMPILER

หากข้างต้นไม่สามารถแก้ปัญหาของคุณได้?

คุณสามารถเลือกที่จะลบอ็อพชัน C และ CXX ใน cmakelists.txt ได้โดยการตั้งค่า # ด้านหน้าของตำแหน่ง enable_language (C) และหลีกเลี่ยงการคอมไพล์โปรเซสเซอร์ Android ARM



0

ฉันมีปัญหาที่เกี่ยวข้อง: เครื่องกำเนิด Visual C ++ ไม่ได้อยู่ในรายการเมื่อทำงาน cmake --helpกำเนิดก็ไม่ได้อยู่ในรายชื่อเมื่อทำงาน

ฉันวิ่งwhere cmakeในคอนโซลและพบว่า cygwin ยังมีไฟล์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): คำเตือน MSB8003: ไม่พบตัวแปร WindowsSdkDir_71A จากรีจิสทรี TargetFrameworkVersion หรือ PlatformToolset อาจถูกตั้งค่าเป็นหมายเลขเวอร์ชันที่ไม่ถูกต้อง

ข้อผิดพลาดหมายความว่าไม่ได้ติดตั้งเครื่องมือสร้างสำหรับ XP (v140_xp) ในการแก้ไขฉันได้ติดตั้งคุณสมบัติที่เหมาะสมในตัวติดตั้ง Visual Studio 2019 ภายใต้แท็บส่วนประกอบส่วนบุคคล:

ใส่คำอธิบายภาพที่นี่


0

ฉันมีปัญหากับ CMake GUI และ VS 21019 Community Edition ฉันคิดว่าฉันอาจติดตั้ง CMake ก่อน Visual Studio แน่นอนหลังจากที่ฉันอัปเดต CMake 3.15.2 เป็น 3.15.3 ปัญหาก็หายไป



-3

เนื่องจาก CMake ไม่สามารถค้นหาคอมไพเลอร์ Visual Studio ของคุณ เริ่มโปรเจ็กต์ใด ๆ ที่จะดาวน์โหลดคอมไพเลอร์ที่ต้องการและ CMake จะต้องสามารถค้นหาได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.