我安装了基础包,用MinGW Installer GUI和CMake编译C ++。我创建了一个带有hello world的简单文件.c,并且可以使用cmake。 -G“MSYS Makefiles”正常。我将E:\ Programmation \ MinGW \ bin和E:\ Programmation \ MinGW \ msys \ 1.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 \ 1.0的msys.bat shell中使用它,它可以正常工作。所以我的猜测是问题在于Powershell和路径。我想也许是因为硬盘被指定的方式,因为在错误中我得到它调用我的E:\ disk / e / first然后E:/。当我在msys.bat工作时,我必须这样写:/ e / Users / MyName ...
答案 0 :(得分:2)
这是PEBKAC。问题是{em>不与make.exe
,而是你试图滥用它。
我必须说多少次这个?使用MSYS make.exe
,(或确实任何 MSYS工具),在任何环境中,通过运行{{1}启动的MSYS shell。 MSYS项目维护人员明确不支持。
既然你说问题消失了,当你按照预期使用msys.bat
时,(在MSYS shell中,通过运行make.exe
调用),这就是你的问题,而你的问题就在于此。当你试图不恰当地使用它时,它显然是行不通的(即来自PowerShell):那是运气不好;当你破坏自由软件时,通过滥用它,你可以保留所有的部分。
答案 1 :(得分:0)
与接受的答案相反,实际上可以使用PowerShell执行此操作:
sh.exe -c "cd ""$pathToMake""; make"
确保在上面的调用之前清理shell的反斜杠。
$pathToMake = $pathToMake -replace "\\", "/"
此外,MSYS bin必须位于您的路径中,通常看起来像这样(您的路径可能不同):
$env:Path = "C:\GNUstep\msys\1.0\bin;$($env:Path)"