我安装了基础包,用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)"