CMake không tìm thấy trình biên dịch Visual C ++


118

Sau khi cài đặt Visual Studio 2015 và chạy CMake trên một dự án trước đó, lỗi CMake nói rằng nó không thể tìm thấy trình biên dịch 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.

Tôi đã tìm kiếm cl.exetrong thư mục Visual Studio C:\Program Files\Microsoft Visual Studio 14.0và không thể tìm thấy nó.

Làm cách nào để thiết lập CMake hoạt động trên Windows với Visual Studio 2015?


1
Có thể đường dẫn cài đặt của năm 2015 không như những gì CMake mong đợi? Bạn sử dụng phiên bản CMake nào? Ngoài ra, tôi không biết về phiên bản Windows của CMake, nhưng có thể CMake sẽ PATHtìm kiếm chương trình mà nó cần, vì vậy nếu nó không được cập nhật thì nó không thể tìm thấy trình biên dịch.
Một số lập trình viên dude

1
Tôi đang sử dụng cmake phiên bản 3.2.3 tuyên bố có hỗ trợ cho Visual Studio 2015
Asher

1
Sử dụng phiên bản 3.2.x, tôi đã gặp vấn đề này khi tôi cài đặt cmake trước VS2015, vì vậy cài đặt lại cmake sửa lỗi này đối với tôi
Andiana

Đôi khi bạn quên khởi động lại máy tính của mình hoặc không muốn sau khi cài đặt hoặc cập nhật Visual Studio. Trong trường hợp đó, CMake sẽ không tìm thấy trình biên dịch của bạn.
Noki

Câu trả lời:


124

Tôi đã tìm được giải pháp. Mặc dù Visual Studio IDE được cài đặt thành công, nó không cài đặt bất kỳ công cụ xây dựng nào và do đó không cài đặt trình biên dịch C ++.

Bằng cách cố gắng tạo một dự án C ++ theo cách thủ công trong Visual Studio 2015 GUI, tôi có thể nhắc nó tải xuống các gói C ++. CMake sau đó đã có thể tìm thấy trình biên dịch mà không gặp bất kỳ khó khăn nào.


2
Tuyệt, câu trả lời này đã cho tôi manh mối. Tôi sử dụng VS2015 ISO của mình để cài đặt các thành phần C ++ và vấn đề đã được giải quyết.
Peter Liang,

Tôi cũng đã cài đặt bằng VS2015 ISO và nó chỉ cài đặt các phần vb / c # cơ bản. Phải khởi chạy lại ISO để sửa đổi và cài đặt các công cụ c ++ khác.
Abhinav Gauniyal

2
Chính xác thì các bạn đã cài đặt gói / thành phần / thứ nào? Tôi đã tạo Visual C ++ / Win32Project và nó đã cài đặt hai thành phần và chạy OK bên trong VS, nhưng cmake vẫn bị phàn nàn như trước. Cảm ơn. -S
ssimm

Điều đó rất tốt!
user2434741

2
Điều này cũng đã hoạt động với năm 2017 - thật là một điều kỳ lạ! Cảm ơn vì mẹo, bạn đời!
Steve Horvath

36

Đây là giải pháp phù hợp với tôi:

  1. Mở công cụ nhắc lệnh Visual Studio (với tư cách là quản trị viên). Trên windows 10, nó có thể được gọi là 'Dấu nhắc lệnh của nhà phát triển'.
  2. Điều hướng đến nơi bạn có tệp thực thi CMake
  3. Chạy Cmake.exe
  4. Tiếp tục như bình thường để chọn thư mục xây dựng và nguồn
  5. Chọn trình biên dịch Visual Studio thích hợp và nhấn nút cấu hình

Hy vọng rằng nó sẽ chạy mà không có vấn đề.


3
Tôi không nghĩ rằng bạn cần chạy VS Command prompt với tư cách quản trị viên. Nhưng chạy lệnh VS promt không đưa mọi thứ mà cmake đang tìm kiếm vào đường dẫn. Tùy thuộc vào cách bạn cài đặt CMake (cho dù bạn đặt nó trên đường dẫn), bạn cũng có thể điều hướng đến thư mục xây dựng của mình và chạy cmake ..từ đó. Vẫn ủng hộ, vì ví dụ như thiết bị đầu cuối git-bash không tự động đưa mọi thứ vào đường dẫn của nó. Điều này đã giúp tôi!
hetepeperfan

1
Điều này có vẻ giống như một cách giải quyết hơn là một giải pháp, vì thông thường, trình tạo IDE không cần các biến môi trường khác nhau như được tìm thấy trong bộ lời nhắc lệnh dev (bạn chỉ cần điều đó nếu bạn đang sử dụng trình tạo tệp trang hoặc tương tự, chẳng hạn như vai Ninja)
Ryan Pavlik

2
cập nhật: trên Windows 10, nó được gọi là Developer Command Prompt
Mattijs

2
Giải thích rất kỳ lạ: 1: Nó không được gọi là dấu nhắc lệnh của VS Studio 2: "điều hướng", ý bạn là sử dụng lệnh "cd"? 3: Ý bạn là chạy cmake-gui? Như bạn nói ở bước 5 để "bấm" vào nút 4: Tiến hành ?? ý bạn là điền vào? 5: Trên hộp thả xuống trong cửa sổ cấu hình, tôi có thể chọn trình biên dịch VS, nhưng trình biên dịch vẫn là C & C ++ chưa được biết ...
DrumM

1
Btw, chỉ cần gõ vào cmake tìm kiếm và bạn sẽ tìm thấy cmake-gui
DrumM

31

Tôi đã xem trong tệp CMakeError.log và tìm thấy lỗi về cannot run 'rc.exe'

Tôi đã tìm kiếm và tìm thấy câu trả lời này để sao chép RC.Exe và RcDll.Dll từ thùng Microsoft SDKs vào thùng VC và sau đó CMake hoạt động.


Chỉnh sửa: Câu trả lời hàng đầu cho một câu hỏi khác gợi ý rằng đó là vấn đề PATH, vì vậy có thể đủ để đảm bảo ngăn Microsoft SDK nằm trong PATH của bạn.


15

Đảm bảo rằng bạn đang sử dụng đúng phiên bản Visual Studio trong trình tạo. Tôi đã chọn không chính xác Visual Studio 15 khi cài đặt Visual Studio 14.


3
Đây cũng là vấn đề của tôi. Thật khó hiểu vì Visual Studios 2015 là Phiên bản 14!
Paul Wintz

4
Lưu ý rằng bạn có thể cần phải xóa bộ nhớ cache của mình để thay đổi phiên bản của VS. Để thực hiện việc này, hãy nhấp vào Tệp> Xóa bộ nhớ cache.
Paul Wintz

Điều này đã giúp ... lập phiên bản ở mức tốt nhất!
Noel Widmer

arrrrg, @PaulWintz cảm ơn bạn vì lời nhắc đó. Tôi nghĩ rằng trong trường hợp của mình, tôi đã chạy cmake với bộ nhớ cache cmake sạch nhưng trong khi VisualStudio đang đợi tôi khởi động lại máy tính để hoàn tất cập nhật VS và sau đó cmake đã lưu trữ tình huống xấu một cách thông minh.
orion elenzil

13

Những người gặp phải vấn đề này trên Visual Studio 2017: có một tính năng liên quan đến CMake cần được chọn và cài đặt cùng với các bộ công cụ biên dịch có liên quan. Xem ảnh chụp màn hình bên dưới.

Công cụ Visaul C ++ cho CMake phải được cài đặt


Còn phiên bản 2015 thì sao? Tôi không thể tìm thấy hộp kiểm này trong cài đặt 2015. Một giải pháp có thể để cập nhật đến năm 2017 ...
DrumM

1
@DrumM, tính năng này dành riêng cho Visual Studio 2017. Tôi không tin rằng tính năng này tồn tại trong VS 2015.
Vadim Berman,

Bạn có chắc điều này là cần thiết? Nó không chỉ để sử dụng CMake từ bên trong Visual Studio?
Peter Mortensen,

@PeterMortensen: nó giải quyết được vấn đề cho tôi. Một lần nữa, Visual Studio 2017.
Vadim Berman,

9

Nếu không có giải pháp nào ở trên hoạt động, hãy dừng lại và kiểm tra độ tỉnh táo.

Tôi đã bị cháy khi sử dụng sai -G <config>chuỗi và nó gây cho tôi lỗi gây hiểu lầm này.

Đầu tiên, hãy chạy từ VS Command Prompt không phải là dấu nhắc lệnh thông thường. Bạn có thể tìm thấy nó trong Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015Phần này thiết lập tất cả các đường dẫn chính xác đến các công cụ VS, v.v.

Bây giờ hãy xem những máy phát điện nào có sẵn từ 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". ...

Sau đó, chọn chuỗi thích hợp với [vòm] được thêm vào.

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

Chạy cmake trong một thư mục con giúp dễ dàng thực hiện việc 'dọn dẹp' hơn vì bạn có thể xóa mọi thứ trong thư mục đó.

Tôi đã nâng cấp lên Visual Studio 15 nhưng không được chú ý và đang cố gắng tạo cho năm 2012.


7

Đối với tôi, tôi đã kiểm tra CMakeError.logtệp và tìm thấy:

[...] lỗi MSB8036: Không tìm thấy phiên bản Windows SDK 8.1. Cài đặt phiên bản Windows SDK được yêu cầu hoặc thay đổi phiên bản SDK trong các trang thuộc tính dự án hoặc bằng cách nhấp chuột phải vào giải pháp và chọn "Giải pháp nhắm mục tiêu lại".

Điều này xảy ra mặc dù đang sử dụng Visual Studio 2017 trên Windows 7. Vì vậy, có vẻ như CMake đang cố gắng xây dựng dự án phát hiện của mình với Windows 8.1 SDK.

Tôi đã sử dụng trình cài đặt Visual Studio để thêm thành phần đó và bây giờ CMake rất vui.


4

Menu → Visual Studio 2015 → MSBuild Command Prompt cho Visual Studio 2015. Sau đó, CMake có thể tìm thấy cl.exe.

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

Thay đổi đường dẫn phía trên đến nơi Windows SDK của bạn được cài đặt.

CMake có thể tìm thấy rc.exe.

cd đến đường dẫn CMakeLists.txtvà làm:

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

Tham số sau -Gsẽ được CMake tìm nạp. Sử dụng --help; bạn có thể có hoặc không có máy phát điện.


Khi bạn đã cài đặt msvc 2015 và 2017 và cố gắng xây dựng với msvc 2015, nó sẽ tự động phát hiện SDK 10.0 khi chạy dấu nhắc lệnh vs2015. Bạn có thể chỉ định phiên bản SDK bằng cách sửa đổi "VS2015 x64 Native Tools Command Prompt" để buộc 8.1 sdk bằng cách thêm vào cuối tham số dòng lệnh như thế này; "% comspec% / k" "C: \ Program Files (x86) \ msdev2015 \ VC \ vcvarsall.bat" "amd64 8.1"
kalmiya

Tôi có phải cài đặt riêng biệt 'MSBuild Command Prompt cho Visual Studio 2015' không? Tôi đã cài đặt msvc 2017 nhưng dấu nhắc lệnh cho visual studio không có ở đó.
meen

2

Tôi gặp phải vấn đề tương tự và đã khắc phục nó bằng cách khởi chạy lại Cài đặt Visual Studio và kiểm tra tùy chọn sau:

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

Nó chứa các tiêu đề C ++ tiêu chuẩn được sử dụng trong hầu hết các ứng dụng và do đó, thường cần phải cài đặt nó.


2

Tôi đã gặp sự cố này trong Windows 10 khi sử dụng Visual Studio 2015 Professional, trong khi Visual Studio 2015 Express hoạt động! Trong Windows 7, cả hai phiên bản Visual Studio đều hoạt động.

Các dự án mới được tạo từ Visual Studio 2015 Professional IDE biên dịch thành công, nhưng CMake sẽ không tìm thấy báo cáo trình biên dịch:

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

Tôi đã nâng cấp CMake từ 3.4.1 lên 3.11.4 và bây giờ sự cố đã không còn nữa.


1

Nếu bạn đang sử dụng Visual Studio 2017, bạn cần ít nhất CMake 3.8!


1

Tôi đã gặp sự cố tương tự với dự án Visual Studio 2017 được tạo thông qua CMake. Một số gói bị thiếu khi cài đặt Visual Studio trong phát triển Máy tính để bàn với C ++. Xem ảnh chụp nhanh:

Gói Visual Studio 2017:

Gói Visual Studio2017

Ngoài ra, hãy nâng cấp CMake lên phiên bản mới nhất.


0

Trong trường hợp của tôi, có một tập biến môi trường là lý do gây ra lỗi này. Sự cố đã được giải quyết sau khi xóa cxx_flags khỏi các biến môi trường.


0

Tôi gặp sự cố này với CMake 3.12.1, sau khi cập nhật Visual Studio 2017. Tôi chỉ cần chạy lại CMake và nó đã hoạt động.


0

Trong trường hợp của tôi, tôi có thể thấy trong CMakeError.logCMake rằng không thể tìm thấy Windows SDK ( MSB8003: Could not find WindowsSDKDir variable from the registry).

Phiên bản có thể được chỉ định trên dòng lệnh trong lần chạy CMake đầu tiên bằng cách sử dụng:

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

Tôi đã tiến xa hơn sau khi thiết lập điều đó, nhưng tôi gặp phải nhiều vấn đề hơn sau đó (vì vậy tôi cho rằng môi trường của tôi bị rối bằng cách nào đó), nhưng có thể nó sẽ giúp ai đó với vấn đề này.


0

Một số mẹo:

  • Cố gắng đặt đường dẫn theo cách thủ công bằng cách chọn 'nâng cao' và sửa đổi CMAKE_LINKER và CMAKE_MAKE_PROGRAM
  • Xóa bộ nhớ cache - trong CMake with GUI, đi tới: File → Delete Cache.

Vấn đề của tôi là sự kết hợp của những điều đã nêu trước đây: Tôi đã đặt phiên bản trình biên dịch thành 15 thay vì 14 và khi được sửa, tôi phải xóa bộ nhớ cache.

Tôi cũng bắt đầu dấu nhắc lệnh Visual Studio với tư cách quản trị viên và từ đó tôi chạy cmake-gui.exe

Sau đó, mọi thứ hoạt động như nó được cho là.


0

Trong trường hợp của tôi, vấn đề là dự án mẹ, bao gồm cả googletest qua

add_subdirectory(gtest_dir)

được định nghĩa là

PROJECT( projname CXX )

Bằng cách nào đó, CMake không nhận ra

PROJECT(sub_project_name CXX C)

vì trình biên dịch C không được đặt trong cha mẹ.

Tôi đã giải quyết vấn đề bằng cách sử dụng

PROJECT( projname CXX C)

trong CMakeLists.txttệp chính của tôi .



0

Không có giải pháp nào trước đây phù hợp với tôi. Tuy nhiên, tôi nhận thấy rằng mặc dù tôi đã cài đặt Visual Studio phiên bản 15 (đừng nhầm với Visual Studio 2015) thư mục được tạo trên máy tính của tôi là dành cho Visual Studio 14.

Khi tôi chỉ định Visual Studio 14 khi tôi nhấn nút cấu hình, nó hoạt động.


Việc đánh số phiên bản cho Visual Studio chỉ là ... kỳ quặc. Visual Studio 14 là trong thực tế Visual Studio 2015, không có Visual Studio 2014. Xem câu trả lời của cúpgeek's stackoverflow.com/a/40332976/1319284
kutschkem

0

tôi tìm thấy lỗi này tại stackoverflow và tôi làm việc cho tôi mặc dù không hoạt động với các sollution khác nếu bạn có hệ điều hành windows 10, thực hiện các bước sau sẽ khắc phục được sự cố:

1) đi tới C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Bin

2) sau đó sao chép RC.exe và RcDll từ tệp này

3) đi tới C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ bin và dán hai tệp bạn đã sao chép vào đó.

đó là tất cả những gì tôi hy vọng nó hữu ích ...


0

Tìm trong Cmakelists.txt nếu bạn tìm thấy ARM, bạn cần cài đặt C ++ cho ARM và cũng như sử dụng vcvarsall.bat cho thư mục bin ARM.

Đó là các gói này:

Nền tảng Windows chung C ++ dành cho ARM64 "Không bắt buộc"

Trình biên dịch và thư viện Visual C ++ cho ARM "Không bắt buộc"

Trình biên dịch và thư viện Visual C ++ cho ARM64 "Rất có thể được yêu cầu"

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

Sau đó, các vấn đề có thể biến mất:

Không tìm thấy CMAKE_C_COMPILER nào.

Không tìm thấy CMAKE_CXX_COMPILER nào.

Nếu ở trên không giải quyết được vấn đề của bạn?

Theo tùy chọn, bạn có thể xóa tùy chọn C và CXX trong cmakelists.txt bằng cách đặt # trước vị trí của enable_language (C). Và tránh biên dịch bộ xử lý ARM Android.



0

Tôi gặp sự cố liên quan: trình tạo Visual C ++ thậm chí không có trong danh sách khi chạy cmake --help.

Tôi đã chạy where cmaketrong bảng điều khiển và thấy rằng cygwin cũng cung cấp tệp cmake.exe của riêng mình , tệp này đang được sử dụng. Thay đổi thứ tự của các thư mục trong PATH đã khắc phục sự cố.


0

Kiểm tra CMakeErrors.log trong CMakeFiles được trả về:

C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \ Platforms \ x64 \ PlatformToolsets \ v140_xp \ Toolset.targets (36,5): cảnh báo MSB8003: Không thể tìm thấy biến WindowsSdkDir_71A từ sổ đăng ký. TargetFrameworkVersion hoặc PlatformToolset có thể được đặt thành số phiên bản không hợp lệ.

Lỗi có nghĩa là công cụ xây dựng cho XP (v140_xp) chưa được cài đặt. Để khắc phục, tôi đã cài đặt tính năng thích hợp trong trình cài đặt Visual Studio 2019 trong tab Thành phần riêng lẻ:

nhập mô tả hình ảnh ở đây


0

Tôi gặp sự cố này với CMake GUI và VS 21019 Community Edition. Tôi nghĩ rằng tôi có thể đã cài đặt CMake trước Visual Studio - chắc chắn sau khi tôi cập nhật CMake 3.15.2 lên 3.15.3, sự cố đã biến mất.



-3

Vì CMake không thể tìm thấy trình biên dịch Visual Studio của bạn. Bắt đầu bất kỳ dự án nào sẽ tải xuống các trình biên dịch cần thiết và sau đó CMake phải có thể tìm thấy nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.