我正在尝试从makefile中的Windows命令提示符运行cygwin包。我手动将需要的cygwin包放在单独的文件夹中,将它们添加到PATH环境变量中。我可以直接从命令行执行包,它们都按预期工作,但是当我将bash行添加到makefile(例如:“rm -f file.o”)时,它只是在我运行时直接回复它'make clean'并且即使它从命令起作用也不会执行rm。
任何人都知道为什么它不能在make文件中运行?
编辑:这是代码的一部分
.PHONY: clean
# Other Targets
clean:
xargs -a rm.txt rm -f
banner -c @ done
答案 0 :(得分:0)
如果它在bash中运行,为什么不调用“bash.exe -c make”?
答案 1 :(得分:0)
我将你的代码复制到一个Makefile中,并创建了另外两个文件:rm.txt和傻瓜。这是会议的成绩单:
x003347@D011-62:~/workarea/trials/mk_test> vi Makefile # copied your code
x003347@D011-62:~/workarea/trials/mk_test> touch silly # create empty file
x003347@D011-62:~/workarea/trials/mk_test> vi rm.txt # contains file to be removed
x003347@D011-62:~/workarea/trials/mk_test> ls
Makefile rm.txt silly
x003347@D011-62:~/workarea/trials/mk_test> make
xargs -a rm.txt rm -f
banner -c @ done
make: banner: Command not found
make: *** [clean] Error 127
x003347@D011-62:~/workarea/trials/mk_test> ls
Makefile rm.txt
x003347@D011-62:~/workarea/trials/mk_test>
好的,banner命令不起作用,但是rm命令没有!我的rm.txt包含一行“silly”。
我在代码中更改的是简单地使用制表符而不是4个空格来启动每个命令行。我不确定你的Makefile中有什么,因为当你在这里粘贴代码时它会自动转换为空格(我刚试过)。不过,我的猜测是你需要确保在每个命令开头的Makefile中都有真正的制表符。
BTW:我是在linux机器上做的,而不是cygwin,所以这可能会有所作为......虽然不应该。