我发布这个问题是因为我在网上找不到任何关于它的东西。我在Windows 10上,我是make
的新手。使用make
在PowerShell上运行Remove-Item
(在普通终端和Visual Studio的Developer PowerShell控制台上)无法忽略错误,基本上是不存在的文件要删除。
下面是我的Makefile的一部分,它没有运行:
REMOVE_COMMAND = Remove-Item -ErrorAction Ignore
clean:
$(REMOVE_COMMAND) *.o
以下是运行make clean
时的错误:
Remove-Item -ErrorAction Ignore *.o
process_begin: CreateProcess(NULL, Remove-Item -ErrorAction Ignore *.o, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [Makefile:4: clean] Error 2
如何让make
运行Remove-Item
来删除文件并忽略不存在的文件?
奇怪的是,在PowerShell上运行Remove-Item -ErrorAction Ignore *.o
作为独立命令运行得很好(即使没有-ErrorAction Ignore
)。我不相信文本替换与导致错误有任何关系,因为我已经尝试运行make
,替换命令和不替换命令。我替换这个命令是因为我也将在Linux上运行这个Makefile(因此在这种情况下将使用rm
)。
1条答案
按热度按时间qq24tv8q1#
按预期返回一个Liner的PowerShell代码
我已经看到一些Stack Exchange帖子,您可以使用**$$null**结束PowerShell Make Recipe:
(e.g GNU Make and Windows Powershell : "Remove-Item -ErrorAction Ignore" does not work)。
但有时你可能希望你的Make Recipe知道退出代码。在指示Make使用哪个shell之后(见下文),只需将命令 Package 为:
您将能够将退出代码传递给Make。我知道一些Maven可能对此有意见,但它适用于一行程序。
告诉Make Your Shell
如果你只是使用PowerShell,那么你不需要条件。
创建目标
我展示了三个常见的ErrorActions和它们的结果Make。
1.错误操作停止
配方输出:
1.错误操作继续
配方输出:
1.错误操作继续
没有配方输出。这是意料之中的事。