проблемы с cmake в винде

Я пытаюсь скомпилировать этот (довольно сложный) фрагмент кода с помощью cmake и MinGW в Windows:

#include <iostream>

int main()
{
    std::cout << "Test" << std::endl;
    return 0;
}

Это файл CMakeLists.txt (который корректно работает в Linux):

cmake_minimum_required(VERSION 2.6)

SET(CMAKE_C_COMPILER path/to/gcc)
SET(CMAKE_CXX_COMPILER path/to/g++)

project(cmake_test)

add_executable(a.exe test.cpp)

С командой:

cmake -G"MinGW Makefiles" .

Я получаю эти ошибки:

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeMinGWFindMake.cmake:20 (MESSAGE):
  sh.exe was found in your PATH, here:

  C:/MinGW/msys/1.0/bin/sh.exe

  For MinGW make to work correctly sh.exe must NOT be in your path.

  Run cmake from a shell that does not have sh.exe in your PATH.

  If you want to use a UNIX shell, then use MSYS Makefiles.

Call Stack (most recent call first):
  CMakeLists.txt:8 (project)


CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER_ENV_VAR
CMake Error: Could not find cmake module file:C:/cmake_test/CMakeFiles/CMakeCCompiler.cmake
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Could not find cmake module file:C:/cmake_test/CMakeFiles/CMakeCXXCompiler.cmake
-- Configuring incomplete, errors occurred!

Эти ошибки мне мало помогли. Учитывая, что это работает в Linux, это должно быть что-то связанное с конфигурацией Windows.

Спасибо за любую помощь!

Конфигурация:
— Windows 7
— MinGW/GCC 4.6.1


person Pietro    schedule 24.10.2012    source источник
comment
Сообщение об ошибке от CMake ясно: убедитесь, что на вашем пути нет sh. То есть: не запускайте CMake -GMinGW Makefiles из командной строки MSys.   -  person André    schedule 21.01.2015
comment
Так почему наличие sh.exe на моем пути является проблемой?   -  person odiszapc    schedule 31.05.2017
comment
Запустив where sh.exe, я нашел его в C:\Cygwin64\bin\sh.exe и C:\Program Files\OpenSSHbinsh.exe. Как удалить основные папки Cygwin и OpenSSH , не нарушая их?   -  person Brethlosze    schedule 04.10.2017


Ответы (3)


Это связано с тем, что в вашем пути есть C:/MinGW/msys/1.0/bin/, для создания проектов с помощью CMake и MinGW удалите его из своего пути и вместо этого добавьте C:/MinGW/bin/

person fenix688    schedule 22.01.2015
comment
Что насчет C:\ProgramData\chocolatey\lib\msys2. Это совсем не связано? - person Brethlosze; 04.10.2017

У вас могут быть лучшие результаты с -G "MSYS Makefiles" вместо "MinGW Makefiles", но я предупреждаю вас - это будет медленным.

person André Anjos    schedule 16.08.2013

Удаление sh.exe из PATH улучшило ситуацию.
Я получаю больше ошибок, но на более позднем этапе...

person Pietro    schedule 24.10.2012