Msys 在 Powershell 中生成 - 没有这样的文件或目录
Msys make in Powershell - No such file or directory
我安装了基础包以使用 MinGW 安装程序 GUI 和 CMake 编译 C++。我用 hello world 创建了一个简单的文件 .c ,并且可以使用 cmake 。 -G"MSYS Makefiles" 通常。我将 E:\Programmation\MinGW\bin 和 E:\Programmation\MinGW\msys.0\bin 添加到我的路径中。
这是我的 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,当我使用 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.0 的 msys.bat shell 中使用它,它会正常工作。所以我的猜测是问题出在 Powershell 和路径上。我想这可能是因为指定硬盘驱动器的方式,因为在错误中我得到它首先调用我的 E:\ disk /e/ 然后是 E:/。当我在 msys.bat 工作时,我必须这样写:/e/Users/MyName...
这是PEBKAC。问题是不是与make.exe
,而是你试图滥用它的方式。
我要说多少遍?在 MSYS shell 以外的 any 环境中使用 MSYS make.exe
,(或者实际上是 any 的 MSYS 工具)由 运行 msys.bat
启动,MSYS 项目维护者绝对不支持。
既然你说问题消失了,当你按预期使用 make.exe
时,(在 MSYS shell 中,由 运行 msys.bat
调用) ,这是你的问题,而且是你一个人的问题。当您尝试不正确地使用它(即从 PowerShell)时,它显然不起作用:那是运气不好;当你破坏自由软件时,通过滥用它,你可以保留所有的部分。
与接受的答案相反,实际上可以使用 PowerShell 执行此操作:
sh.exe -c "cd ""$pathToMake""; make"
确保在上述调用之前清除 shell 的反斜杠。
$pathToMake = $pathToMake -replace "\", "/"
此外,MSYS bin 必须在您的路径中,通常看起来像这样(您的路径可能不同):
$env:Path = "C:\GNUstep\msys.0\bin;$($env:Path)"
我安装了基础包以使用 MinGW 安装程序 GUI 和 CMake 编译 C++。我用 hello world 创建了一个简单的文件 .c ,并且可以使用 cmake 。 -G"MSYS Makefiles" 通常。我将 E:\Programmation\MinGW\bin 和 E:\Programmation\MinGW\msys.0\bin 添加到我的路径中。
这是我的 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,当我使用 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.0 的 msys.bat shell 中使用它,它会正常工作。所以我的猜测是问题出在 Powershell 和路径上。我想这可能是因为指定硬盘驱动器的方式,因为在错误中我得到它首先调用我的 E:\ disk /e/ 然后是 E:/。当我在 msys.bat 工作时,我必须这样写:/e/Users/MyName...
这是PEBKAC。问题是不是与make.exe
,而是你试图滥用它的方式。
我要说多少遍?在 MSYS shell 以外的 any 环境中使用 MSYS make.exe
,(或者实际上是 any 的 MSYS 工具)由 运行 msys.bat
启动,MSYS 项目维护者绝对不支持。
既然你说问题消失了,当你按预期使用 make.exe
时,(在 MSYS shell 中,由 运行 msys.bat
调用) ,这是你的问题,而且是你一个人的问题。当您尝试不正确地使用它(即从 PowerShell)时,它显然不起作用:那是运气不好;当你破坏自由软件时,通过滥用它,你可以保留所有的部分。
与接受的答案相反,实际上可以使用 PowerShell 执行此操作:
sh.exe -c "cd ""$pathToMake""; make"
确保在上述调用之前清除 shell 的反斜杠。
$pathToMake = $pathToMake -replace "\", "/"
此外,MSYS bin 必须在您的路径中,通常看起来像这样(您的路径可能不同):
$env:Path = "C:\GNUstep\msys.0\bin;$($env:Path)"