zoukankan      html  css  js  c++  java
  • 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
    ");
        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就可以构建我们的工程了。

     如何运行程序呢?

    我们右键工程名,按下图就可以运行结果了

     

  • 相关阅读:
    [iOS]UIDynamicAnimator动画
    [iOS]被忽略的main函数
    [iOS]app的生命周期
    vue 封装http请求时错误信息提示使用element-ui message,只提示一次
    angular8 Vue 导出excel文件
    python3 tornado api + angular8 + nginx 跨域问题
    ubutu tornado python3.7.5 nginx supervisor 部署web api
    angular cli 反向代理实现跨域
    angular8自定义管道、指令以及获取dom值
    angular cli 使用echarts
  • 原文地址:https://www.cnblogs.com/listenscience/p/11509164.html
Copyright © 2011-2022 走看看