簡體   English   中英

無法解釋的 makefile 行為

[英]Unexplained makefile behavior

我有以下 makefile:

all:
    echo $(PATH)

當我使用以下命令執行文件時

make -f pathtest.mk

我得到一個錯誤和正確的執行。 錯誤如下所示

/usr/bin/sh: -c: line 0: syntax error near unexpected token `('
/usr/bin/sh: -c: line 0: `echo C:\Users\Aris\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\local\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\Aris\bin;C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files (x86)\AMD\ATI.ACE\Core-Static;C:\Program Files\Microsoft SQL Server\120\Tools\Binn;C:\Program Files\Common Files\Autodesk Shared;C:\Program Files\PuTTY;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\python.exe;C:\Program Files\dotnet;C:\Program Files (x86)\VisioForge\VisioForge .Net SDKs Base Redist x86;C:\Program Files\VisioForge\VisioForge .Net SDKs Base Redist x64;C:\Program Files (x86)\VisioForge\VisioForge .Net SDKs FFMPEG EXE x86 Redist;C:\Program Files (x86)\VisioForge\VisioForge .Net SDKs LAV Redist x86;C:\Program Files\Pandoc;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C;C:\Program Files\Git\cmd;C:\Program Files\nodejs;C:\Program Files\Microsoft SQL Server\150\Tools\Binn;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn;C:\Program Files (x86)\dotnet;C:\Users\Aris\AppData\Local\Microsoft\WindowsApps;C:\Users\Aris\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Aris\MiKTeX\miktex\bin\x64;C:\Users\Aris\.dotnet\tools;C:\Users\Aris\bin\pmtk;C:\Users\Aris\AppData\Roaming\npm;C:\Neovim\bin;C:\Users\Aris\bin\mingw64\bin;C:\Users\Aris\bin\netcoredbg;C:\Program Files\Git\usr\bin\vendor_perl;C:\Program Files\Git\usr\bin\core_perl'
mingw32-make: *** [pathtest.mk:2: all] Error 1

all目標都有制表符標識,我已經在 unix 和 dos 行結尾嘗試了該文件。 我不知道發生了什么。 我在 windows 環境的 git 下,我正在使用 mingw 制作。 我正在嘗試進行此測試,因為我試圖在我的 windows 機器上編譯一些 GNU 代碼。

make擴展$PATH並讓您的 shell 運行echo...行。 但是; (是 shell 中導致錯誤的特殊字符。

如果您確定 $PATH 中沒有雙引號,則可以使用

echo "$(PATH)"

或類似地用單引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM