Windowsでmakefileを使用して、Unixサーバー上のいくつかのファイルをプッシュしています(ここでは、makefileの同じフォルダーにあるテキストファイル「blob.txt」)。私のmakefileスクリプトは次のとおりです。
setup:
pscp blob.txt username@hostname:/folder/
コマンドプロンプトを起動し、blob.txtとmakefileが存在するフォルダーに移動して、次のように入力します。
make setup
結果:
pscp blob.txt username@hostname:/folder/
process_begin: CreateProcess(NULL, pscp blob.txt username@hostname:/folder/, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [setup] Error 2
#fail ...では、コマンドプロンプトにコマンドを直接入力した場合:
pscp blob.txt username@hostname:/folder/
それは動作します...私は本当になぜだろうか。
エラー
process_begin: CreateProcess(NULL, pscp blob.txt username@hostname:/folder/, ...) failed.
make (e=2): The system cannot find the file specified.
windowsがpscp
を見つけられないと不満を言っていることはほぼ確実です。
%PATH%
(または何でも)の値がdifferentであるため、これはほぼ確実です。makeがシェル/コンソールをスポーンし、その後手動で開いたときです。
値を比較して確認します。次に、メイクファイルレシピでpscp
へのフルパスを使用するか、PATH
の値がmake
の使用に対して正しく設定されていることを確認します。
私の場合、bash.exeとsh.exeを含む%PATH%
にgit\binがありました。PATH
から%GIT_HOME%\bin
を削除するとうまくいきました
@ user3869623のソリューションは私のために機能します。写真を完成させるために私の詳細を共有したいと思います。
私のメイクファイルには以下のターゲットが含まれています:
clean:
@echo '$(OS)'
ifeq ($(OS),Windows_NT)
del /s *.o *.d *.elf *.map *.log
endif
make clean
を実行すると、次のエラーが表示されます。
echo
で問題が発生したと書かれているため、makefileターゲットを以下に変更します。
clean:
ifeq ($(OS),Windows_NT)
del /s *.o *.d *.elf *.map *.log
endif
今回は、make clean
から次のエラーが表示されます。
Windowsコマンドラインで作業しているので、ここにbash
が表示されて驚いています。
次に、%PATH%
を確認しました。次のエントリが表示されます。
C:\DevTools\Git\bin
そのパスにはbash.exe
とsh.exe
があります。そのため、このエントリを削除しましたが、現在は正常に機能しています。
しかし、私はまだこれがなぜバッシュなのか分からないのですか?
C:\DevTools\Git\bin
が%PATH%
に表示される理由については、私はSublimeを使用しており、Gitバイナリを常に要求するためです。
私はこれが答えられた古い質問であることを知っています、しかし、私がそうするだろうと思って、まだこれに出くわしている誰のための私の経験でも。私は同じ謎のエラーを受け取っていましたBeaubel大佐(ただし、pscpではなくwindowsのMOVEコマンドを使用):
process_begin: CreateProcess(NULL, move /y foo\bar.c .\baz.c, ...) failed.
make (e=2): The system cannot find the file specified.
CIは同じMakefileを実行し、完全に機能していました。 CIはmingw32-makeを使用し、GNU makeを使用していたことが判明しました。 GNU make(無関係なバルクパッケージの一部としてインストールされた)をアンインストールし、mingw32-makeを「make」にエイリアスすることは完全に機能します。
User3869623の応答に基づいて作成します。
私の場合、bash.exeとsh.exeを含む%PATH%にgit\binがありました。PATHから%GIT_HOME%\ binを削除するとうまくいきました
この推奨事項によりmake
の実行が許可される場合がありますが、特にmakefileがgitリポジトリからソフトウェアをインストールしている場合、gitに問題が発生する可能性があります。
より良い解決策は、単に%GIT_HOME%\bin
から%GIT_HOME%\cmd
頻繁に使用するため、PATH変数からGITのbinフォルダーを削除したくありません(Windowsマシンを使用しています)。だから私は回避策を探しました。そして、ここにあります:
_<git-installation-directory>/usr/bin
_ディレクトリもPATH変数に追加します。これは基本的に、「GIT bash」に付属する残りのlinuxのようなコマンドを環境に追加します。これを適用した後、私のメイクファイルは再び正常に実行されました。 :)
Makeによってどのシェルが呼び出されるのか知りたい場合は、makefileの先頭に$(info $(Shell))
を追加してください。 makeを実行するとすぐに、呼び出されているシェルのパス/名前がコンソールに出力されます。
PATH
からgit binフォルダーを削除しようとしても機能しなかった場合は、bash.exe
を含むパスのPATH
変数を検索してください。
私の場合、cygwin binフォルダーC:\cygwin64\bin
にリンクしている変数を見つけて削除し、機能しました。