首页 文章

Msys在Powershell中制作 - 没有这样的文件或目录

提问于
浏览
0

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

2 回答

  • 2

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

    我要说多少次这个?在MSYS项目维护者明确不支持MSYS shell(通过运行 msys.bat 启动)的任何环境中使用MSYS make.exe (或实际上任何MSYS工具) .

    既然你说你的问题消失了,当你按照预期使用 make.exe 时(在MSYS shell中,通过运行 msys.bat 来调用),这就是你的问题,而你的问题就在于此 . 当你试图不恰当地使用它时,它显然是行不通的(即来自PowerShell):那是运气不好;当你打破自由软件时,通过滥用它,你可以保留所有的东西 .

  • 0

    与接受的答案相反,实际上可以使用PowerShell执行此操作:

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

    确保在上面的调用之前清理shell的反斜杠 .

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

    此外,MSYS bin必须位于您的路径中,通常看起来像这样(您的路径可能不同):

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

相关问题