记录一个Windows下Makefile的神坑

之前在写一个cpp的项目,不想用一些比较臃肿的IDE,所以就直接vscode+Makefile了

然后,因为是在windows下开发,遇到了一些神坑了。。


首先是make clean (别问我为什么不用cmake,是懒得配置

1
2
clean:
rm $(TARGET) $(OBJS)

很正常的代码,但是就是运行崩了

并不是因为rm的原因,因为这是运行在powershell下的结果

首先,它报出了这样的错误

1
2
3
4
process_begin: CreateProcess(NULL, rm sb.exe src/main.o src/ELFReader.o, ...) failed.
make (e=2): 系统找不到指定的文件。
Makefile:23: recipe for target 'clean' failed
make: *** [clean] Error 2

似乎是找不到命令的原因。

后来我发现在powershell底下,rm后面的文件与文件之间必须要是逗号分隔……

修改后,还是爆出一样的错误,经过一系列的搜索并没有搜出个什么来

后来经朋友提醒……加个引号试试

1
2
clean:
"rm $(TARGET) $(OBJS)"

很有道理,那么CreateProcess第二个就像一个参数了

果然,不一样的报错了

1
2
3
4
"rm sb.exe src/main.o src/ELFReader.o"
/usr/bin/bash: rm sb.exe src/main.o src/ELFReader.o: No such file or directory
Makefile:30: recipe for target 'clean' failed
make: *** [clean] Error 127

好的,你告诉我为什么在Windows下会调用的是bash(万脸问号)???

结合起来搜索,似乎说这是因为git bash的原因 ´_>`

不过,我并不打算管了,Windows下开发不用ide坑太多了

果断转移到Linux底下去


另外就是,MinGW在window下的依赖问题

如果是mingw-w64,则能很好的进行64位程序的编译,但是,当我加上-m32

正常的默认设置是不支持编译32位程序的,但SJLJ的是支持的

重新安装过后,-m32能正常编译了,但是程序运行会爆出

应用程序无法正常启动0xc000007b的错误,似乎也是一些依赖问题

但暂时不打算解决了,要想编译32位的程序,大可另外下个w32版本的mingw

Windows实在……太坑了´_>`

×

赞助gif换电脑、吃双皮奶(逃

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
,