44

Currently trying to setup my C development environment on windows with MinGW and it looks like CMAKE is giving me the following error:

sh.exe was found in your PATH, here:
C:/Program Files/Git/user/bin/sh.exe
For MinGW make to work correctly sh.exe must NOT be in your path.
Run cmake from a shill that does not have sh.exe in your PATH.
If you want to use a UNIX shell, then use MSYS Makefiles

That error is being thrown inside of CLion IDE. I am not sure if I need to change settings inside of CLion or what. I have looked at my windows path and I do not see any reference to sh.exe.

My path is as follows:

C:\Program Files (x86)\Razer Chroma SDK\bin;C:\Program Files\Razer Chroma SDK\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Nodist\bin;C:\Users\wesle\AppData\Local\Microsoft\WindowsApps;
  • 1
    check for `C:/Program Files/Git/user/bin` in your path. You have GIT installed alongside with its shell. – Jean-François Fabre Dec 26 '16 at 15:24
  • 1
    Remove it from your `PATH` then? – πάντα ῥεῖ Dec 26 '16 at 15:24
  • As stated I have already looked in my `PATH` and I do not see any references to /Git/ or sh.exe –  Dec 26 '16 at 17:11
  • @Septimus where are you getting the value of `PATH` from? I'll take a guess that what you've posted is the *system* `PATH` variable, and that you also have a user `PATH` that contains `C:/Program Files/Git/user/bin` – user3419537 Dec 29 '16 at 18:59
  • Possible duplicate of [cmake problems in Windows](http://stackoverflow.com/questions/13047693/cmake-problems-in-windows) – Neuron Apr 03 '17 at 11:58

6 Answers6

77

For me, this simple parameter passed to cmake has worked -DCMAKE_SH="CMAKE_SH-NOTFOUND".

Elia
  • 1,417
  • 1
  • 18
  • 28
  • 12
    if you're using CLion, what @Elia means is, that you should go to `File -> Settings -> Build, Execution, Deployment -> CMake` and where it says CMake options paste `-DCMAKE_SH="CMAKE_SH-NOTFOUND"` – Filip Markoski Jun 27 '19 at 23:14
7

Check you really do not have sh.exe in your PATH by opening a Windows Command Line and typing where sh.exe. If you have this file in your path, the command will return its path (then you should remove it from your PATH) else if windows return it was not found, try to clean up the folder CMakeFiles and a file name CMakeCache.txt somewhere inside your project folder.

lucrib
  • 448
  • 1
  • 9
  • 21
6

Just add

set(DCMAKE_SH="CMAKE_SH-NOTFOUND")

to your

CMakeLists.txt file

A.Najafi
  • 691
  • 1
  • 9
  • 20
  • This or the response by @Elia is the correct answer, imho. Asking the user to change their PATH variable, possibly/probably affecting other applications is not ideal (I prefer to edit the CMakeLists file so that I have a reference of the fix for next time). – heyhey2k Sep 24 '20 at 15:56
1

It's the problem of your git's path.
I assume you are using the Clion, just check if you have added %gitpath%\binto your path, that's where the problem is. You should use %gitpath%\cmdinstead, typically for me it's D:\Git\cmd.Since the former one includes sh.exe in your path which results in the error.

0

I like @Elia's answer, but if you are using CLion, it uses the CodeBlocks - MinGW Makefiles CMake generator which doesn't have the sh.exe checking problem. Add this to your CMake line:

-G "CodeBlocks - MinGW Makefiles"
sourcedelica
  • 23,940
  • 7
  • 66
  • 74
0

Not exactly this setup (working from terminal here), but got the same error. In my case, sh.exe was not in my path, but was built into the terminal I was using (cmder). Switching to regular CMD worked for me.

Anis R.
  • 6,656
  • 2
  • 15
  • 37