Msys make в Powershell - нет такого файла или каталога

Я установил базовый пакет для компиляции C++ с графическим интерфейсом MinGW Installer и CMake. Я создал простой файл .c с hello world и могу использовать 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}
)

Однако после создания make-файла при использовании 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

Я могу отлично скомпилировать файл main.c с помощью gcc main.c, и exe-файл, который он создает, работает, поэтому проблема связана с make.exe.

Если я использую его в оболочке msys.bat, расположенной в E:\Programmation\MinGW\msys\1.0, он работает как надо. Итак, я предполагаю, что проблема связана с Powershell и путем. Я думаю, может быть, это из-за того, как обозначаются жесткие диски, так как в ошибке, которую я получаю, он сначала вызывает мой диск E: \ /e/, а затем E:/. Когда я работаю в msys.bat, мне приходится писать так: /e/Users/MyName...


person Percee    schedule 29.09.2015    source источник


Ответы (2)


Это ПЕБКАК. Проблема не в make.exe, а в том, как вы пытаетесь использовать его не по назначению.

Сколько раз я должен это говорить? Использование MSYS make.exe (или даже любого инструментария MSYS) в любой среде, отличной от оболочки MSYS, которая запускается запуском msys.bat, определенно не поддерживается сопровождающими проекта MSYS.

Поскольку вы говорите, что проблема исчезла, когда вы используете make.exe, как предполагается (в оболочке MSYS, вызываемой запуском msys.bat), это ваша проблема, и только ваша проблема. По-видимому, это не работает, когда вы пытаетесь использовать его неправильно (например, из PowerShell): это неудача; когда вы ломаете свободные программы, злоупотребляя ими, вы сохраняете все части.

person Keith Marshall    schedule 29.09.2015
comment
Хорошо. Не удалось найти такого ответа, надеюсь, в следующий раз, когда кто-то задастся тем же вопросом, они найдут это. - person Percee; 29.09.2015

Вопреки принятому ответу, на самом деле это можно сделать с помощью PowerShell:

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

Убедитесь, что вы очистили обратную косую черту для оболочки перед вызовом выше.

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

Также на вашем пути должна быть корзина MSYS, которая обычно выглядит так (ваш путь может отличаться):

$env:Path = "C:\GNUstep\msys\1.0\bin;$($env:Path)"
person keith    schedule 01.11.2017