2016-03-08 21 views
7

Tôi cố gắng để chạy cmake trên cửa sổ và tôi nhận được lỗi sau:CMake trên Windows

-- The C compiler identification is unknown 
CMake Error at CMakeLists.txt:3 (PROJECT): 
    The CMAKE_C_COMPILER: 

    cl 

    is not a full path and was not found in the PATH. 

    To use the NMake generator with Visual C++, cmake must be run from a shell 
    that can use the compiler cl from the command line. This environment is 
    unable to invoke the cl compiler. To fix this problem, run cmake from the 
    Visual Studio Command Prompt (vcvarsall.bat). 

    Tell CMake where to find the compiler by setting either the environment 
    variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to 
    the compiler, or to the compiler name if it is in the PATH. 

Tuy nhiên biến "CC" môi trường của tôi được thiết lập!

>>echo %CC% 
C:\Anaconda2\MinGW\x86_64-w64-mingw32\bin\gcc.exe 
+5

có thể trùng lặp của [Chạy CMake trên Windows] (http : //stackoverflow.com/questions/4101456/running-cmake-on-windows) – Guillaume

+0

Bạn có thể đưa ra lệnh gọi 'cmake.exe ...' mà bạn đang sử dụng không?Và một dự đoán sẽ là 'C: \ Anaconda2 \ MinGW \ x86_64-w64-mingw32 \ bin' không phải là một phần của biến môi trường' PATH' của bạn (như thông báo lỗi gợi ý). Xem thêm [tại đây] (http://stackoverflow.com/questions/32801638/cmake-error-at-cmakelists-txt30-project-no-cmake-c-compiler-could-be-found). – Florian

+0

@Florian chỉ là cuộc gọi bình thường: "cmake ..". Có nó không phải là một phần của 'PATH' của tôi lỗi nói: Cho CMake biết nơi tìm trình biên dịch bằng cách đặt biến môi trường" CC "hoặc mục nhập bộ nhớ cache CMake CMAKE_C_COMPILER vào đường dẫn đầy đủ tới trình biên dịch hoặc tên trình biên dịch nếu nó Vì vậy, CC của tôi chỉ vào con đường đầy đủ và không chỉ cho tên .. không nên có bất kỳ vấn đề –

Trả lời

5

Biến ý kiến ​​của tôi vào một câu trả lời

Bởi vì thông báo lỗi CMake được gây hiểu lầm ở đây, tôi nghĩ rằng nó đảm bảo một ít câu trả lời chi tiết hơn.

Tóm lại, bạn gặp phải sự cố chicken-and-egg.

phát hiện biên dịch CMake là hùng mạnh, nhưng kể từ khi - trong những người đầu tiên thử -

  • bạn không đưa ra bất cứ explicit generator để sử dụng với -G
  • nó không thể tìm thấy một Visual Studio cài đặt
  • nó không thể tìm thấy bất kỳ trình biên dịch C/C++ nào trong môi trường PATH của bạn
  • nó không thể tìm thấy biến môi trường CC được xác định bằng đường dẫn đầy đủ tới trình biên dịch

nó đã được mặc định là nmake.

Bây giờ ở đây có vấn đề: nó nhớ sự lựa chọn máy phát/trình biên dịch ngầm của bạn trong bộ nhớ cache biến (xem CMAKE_GENERATOR trong CMakeCache.txt). Một tính năng rất hữu ích là gì, nếu bạn đã cài đặt nhiều trình biên dịch.

Nhưng nếu bạn khai báo biến môi trường CC - như thông báo lỗi gợi ý - đã quá muộn kể từ khi lựa chọn của máy phát điện của bạn được ghi nhớ trong lần thử đầu tiên.

Tôi thấy hai cách thể hiện điều này:

  1. bác bỏ lựa chọn máy phát điện bằng cách đưa ra một đúng với cmake.exe -G "MinGW Makefiles" .. (là câu trả lời được liên kết bởi @Guillaume gợi ý)
  2. Xóa thư mục đầu ra nhị phân của dự án của bạn (bao gồm CMakeCache.txt) và làm cmake.exe .. sau khi bạn thêm thư mục bin của trình biên dịch vào môi trường PATH của mình.

Tài liệu tham khảo