Что не так с cmake под mingw

#windows #cmake #mingw

#Windows #cmake #mingw

Вопрос:

 mkdir build
cd build
cmake -G "MinGW Makefiles" ..
  
 CMake Error at I:/msys64/mingw32/share/cmake-3.13/Modules/CMakeMinGWFindMake.cmake:12 (message):
  sh.exe was found in your PATH, here:

  I:/msys64/usr/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:16 (PROJECT)


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

  

но, похоже, что нарушение sh.exe является частью msys??

Хорошо, итак, попробуйте оболочку msys… i:msys64mingw32

 rm -rf build
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
  
 CMake Error at I:/msys64/mingw32/share/cmake-3.13/Modules/CMakeMinGWFindMake.cmake:12 (message):
  sh.exe was found in your PATH, here:

  I:/msys64/usr/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:16 (PROJECT)


CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
  

то же самое.

там sh.exe не должно быть?

последняя попытка…

cmake -G "MinGW Makefiles" -DCMAKE_SH="CMAKE_SH-NOTFOUND" ..

 $ cmake -G "MinGW Makefiles" -DCMAKE_SH="CMAKE_SH-NOTFOUND" ..
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
  

Похоже, есть и вторая проблема?

любая помощь? Спасибо.

Комментарии:

1.Как говорится в сообщении об ошибке, если вы работаете под оболочкой MSYS, вам следует использовать cmake -G "MSYS Makefiles" ... не cmake -G "MinGW Makefiles" ...

Ответ №1:

Прежде всего, убедитесь, что вы mingw32-make установили:

 which mingw32-make
  

если нет, /mingw64/bin/mingw32-make то либо пути нет в вашем ~/.bashrc , либо он не установлен. Я думаю, вы можете установить его с помощью

 pacman -S mingw64/mingw-w64-x86_64-make
  

который также является частью mingw-w64-x86_64-toolchain , который вы, вероятно, уже установили. тогда вы должны иметь возможность запускать

 cmake -D CMAKE_MAKE_PROGRAM:PATH=/mingw64/bin/mingw32-make
  

пожалуйста, попробуйте и дайте мне знать, работает ли это у вас.