MinGW

什么是MinGW,自行百度或谷歌。

安装了MinGW后,需要将安装目录下的bin文件夹添加到系统的环境变量path中。下面给出bin目录下的可执行程序。

$ ls -al
...
... ... ... gcc.exe // C 编译器
... ... ... g++.exe // C++ 编译器
... ... ... mingw32-make.exe  // makefile文件执行

可以看到将bin路径放到path变量中后,我们可以在任意时候使用该目录下的命令。

现在假定在  E:/CC 文件夹下创建 hello.cpp 和 Makefile 文件,使用Makefile是在Windows下用MinGW的最重要的理由,至少对于我来说。

// Makefile
objs = hello.o
cc = g++

edit: $(objs)
  $(cc) -o edit $(objs)
  
hello.o: hello.cpp
  $(cc) -c hello.cpp
  
clean:
  rm $(objs) target.exe

这样我们可以使用 mingw32-make 命令来执行我们的Makefile文件。这里可以看到 mingw32-make.exe 文件名太长,并且不好记,我们可以将其重命名为 make.exe 这样就与Linux下的make命令保持一致了。

E:\CC> make
g++ -c hello.cpp
hello.cpp:9:2: warning: no newline at end of file
g++ -o edit hello.o

Makefile编译成功,并且在CC目录下生成了 hello.o 和 edit.exe 文件,执行 edit.exe 可以输出 Hello World,到这里是成功的。但是当我们执行 make clean 时就不行了。

E:\CC>make clean
rm hello.o edit.exe
process_begin: CreateProcess(NULL, rm hello.o edit.exe, ...) failed.
make (e=2): 系统找不到指定的文件。
make: *** [clean] Error 2

可以看到,系统找不到我们需要删除的文件。但是如果将clean下的操作改为

clean:
  echo %CD%

输出还是 E:\CC,但是执行rm操作的时候没有发现需要删除的文件,个人怀疑是不是执行操作的时候系统的工作目录不是E:\CC。这个问题在Linux Shell下就不会出现。

因为我在Win7下安装了msysgit,当我们在 msysgit 的 bash 环境中执行 make clean操作的时候,删除操作是成功的。why?

转载于:https://my.oschina.net/kuangcaibao/blog/398311

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值