eclipse for C/C++ IDE之Makefile讲解
每天都比较忙,今天抽空讲解下eclipse中Makefile的使用(为何讲解Makefile,主要是因为IDE有了Makefile管理工具才变得非常强大,不会写Makefile的程序员不能称之为合格程序员)
本文内容如下:
1.如何使用eclipse自动生成的Makefile文件
2.如何使用自己写的Makefile文件
下面我们以Windows环境下讲解,Linux下面会更加简单些。
第一步是安装Eclipse for C/C++ IDE ,这个就不说了,安装过程比较可以百度。
第二步安装Mingw32编译器,因为eclipse仅仅只是一个IDE,并不集成编译器。
这里有一篇博客,可以参考https://blog.csdn.net/u013171283/article/details/80898442
第三步安装windows下的make工具,因为在Windows下面大部分用的不是make管理的,因而Windows天生不带make管理工具。
为了方便,我推荐使用CMake工具,下载地址:https://cmake.org/download/
软件非常小,可以默认安装路径,安装好后打开cmd终端,输入make -v,如果输出GUN makea版本,表示安装成功。
第四步(重要的部分):
打开Eclipse for C/C++ IDE,
画面干净而又不失强大。
首先新建一个C工程,工程名为hello,新建好了点击hello工程名右键NEW一个新的文件,命名为main.c。保存文件,编写如下程序:
#include "stdio.h" int main(void) { printf("hello eclipse\n"); return 0; }
如上图所示。此时我们点击“锤子”,会出现如下编译结果,表示编译完成,但为何我们的Makefile没有出现了,奇了怪了,很显然这并不是我想要的结果,别急,下面来设置相关选项。
问题出在我们的IDE默认使用的是CDT的make,而且默认不显示出来,因此我们现在打破默认选项。
点击project选项下的Propeties(如果发现此选项为灰色不可点击,请双击工程文件名hello再试),
点击上图红色框中所指,可以看到默认使用的是CDT Internal builder,我们修改其为gun make,如下图所示
然后点击Apply and close
这时我们再次点击“锤子”(即构建),发现在Debug文件夹下生成了一个makefile文件,打开可以看到确实是gun make风格。
为何此时会生成makefile文件呢?其实原因在于IDE修改为外部构建器时,会自动生成相应的makefile文件。
但这里有一个问题,如果我们试图去修改makefile文件,然后再编译,发现会自动还原,这是因为每次编译时都会自动生成makefile文件,因此我们需要设置不让其自动生成makefile文件。
点击project选项下的Propeties(如果发现此选项为灰色不可点击,请双击工程文件名hello再试),点击C/C++ Build选项,去掉下图红色圈中的勾。然后点击Apply and close。
这时我们再修改makefile,然后编译就不会还原了。
问题来了,那我们如何使用自己写的makefile文件呢?
下面来讲解如何使用自己写的makefile文件。
首先点击Project选项中的clean,删除中间文件和目标文件
然后删除Debug文件夹中的所有文件,在Debug文件夹中新建一个Makefile。注意:这里makefile文件必须新建在Debug文件夹下,否则IDE不识别文件
下面编写一个简单的makefile测试下。
hello.exe:main.o gcc $^ -o $@ %.o:../%.c gcc -c $< -o $@ .PHYONE:clean clean: rm -rf *.o hello.exe
然后编译一下,啊哦,居然报错,我的乖乖(表情包:砸电脑)
从错误提示可以看到没有规则去创建目标文件,其实就是没有写规则,这里问题是因为在eclipse中默认使用的是all目标,现在我们需要自己设置目标。(关于makefile文件的编写,后面有时间会详细写这部分),点击Project选项中的Properies选项。
可以看到默认使用的还是默认的make命令规则,因此我们这里直接修改即可,如下图:
点击Apply and colse。
右键工程名,点击Build Targets -> Create。如下图:
下面添加构建命令
从图中可以看到,蓝色圈中是我们编写makefile的目标,因此我们再新建构建目标时目标名就是我们的makefile文件的目标,可以看到,我们的Makefile文件有两个目标,因此我们需要新建两个构建命令。(同理新建clean)
现在我们直接双击hello.exe就可以构建我们的工程了。
如何运行程序呢?
我们右键工程名,按下图就可以运行结果了