Msys在Powershell中 – 没有这样的文件或目录

我安装了基础包,用MinGW Installer GUI和CMake编译C ++。 我用hello world创build了一个简单的文件.c,并且可以使用cmake。 -G“MSYS Makefiles”正常。 我将E:\ Programmation \ MinGW \ bin和E:\ Programmation \ MinGW \ msys \ 1.0 \ bin添加到我的path中。

这是我的CMakeLists.txt:

cmake_minimum_required (VERSION 3.3) project (Prototype) set (EXECUTABLE_OUTPUT_PATH bin/${CMAKE_BUILD_TYPE}) file ( GLOB_RECURSE source_files src/* ) add_executable ( my_exe ${source_files} ) 

一旦makefile被创build,但是当我使用make,我会得到以下错误:

 /bin/sh:/e/Users/MyName/Documents/GitHub/ProjectName/prototype/c/E:/Programmation/MinGW/msys/1.0/bin/make.exe: No such file or directory make.exe": *** [all] Error 127 

我可以使用gcc main.c编译main.c文件,并生成exe文件,所以问题在于make.exe。

如果我在位于E:\ Programmation \ MinGW \ msys \ 1.0的msys.bat shell中使用它,它应该像它应该那样工作。 所以我的猜测是,问题是与Powershell和path。 我想也许这是因为硬盘驱动器的指定方式,因为在我得到它的错误调用我的E:\磁盘/ E /第一,然后E:/。 当我在msys.bat中工作时,我必须这样写:/ e / Users / MyName …

这是PEBKAC。 问题 make.exe ,而在于试图滥用它的方式。

我要说几次? 使用MSYS make.exe (甚至任何 MSYS工具),除了运行msys.bat启动的MSYS外壳以外的任何其他环境,MSYS Project维护人员完全不支持 MSYS shell。

既然你说你问题消失了,当你使用make.exe时候(在MSYS shell中,通过运行msys.bat调用),这就是你的问题,而你自己的问题。 当你试图不正确地使用它时(例如从PowerShell),它显然不起作用: 当你打破免费软件,滥用它,你会保留所有的作品。

与接受的答案相反,实际上可以使用PowerShell来实现:

 sh.exe -c "cd ""$pathToMake""; make" 

确保在上面的调用之前清理外壳的反斜杠。

 $pathToMake = $pathToMake -replace "\\", "/" 

另外MSYS bin必须在你的路径中,通常看起来像这样(你的路径可能不同):

 $env:Path = "C:\GNUstep\msys\1.0\bin;$($env:Path)"