zoukankan      html  css  js  c++  java
  • Go使用Makefile构建

    我们平常很多时候都是直接在命令行输入go build进行编译的:
    go build .
    
    或者测试使用go run运行项目
    go run main.go
    
    我看有很多大型开源项目都是如下方式:
    make build
    
    或者是这样
    make install
    

    我们打包运行这个过程,还有一个更加贴切的词语叫做构建项目。

    Makefile介绍

    Makefile 是和 make 命令一起配合使用的。它是开源的构建工具,很多大型项目的编译都是通过 Makefile 来组织的。

    安装make

    centons系统的make安装命令:

    yum install -y make
    

    工程结构

    我这里新建了一个工程,工程目录是这样:

    image

    main.go里面的源码如下:

    image

    就多了一个Makefile文件,如果要使用Makefile去构建你项目,就需要在你的项目里面新建这个Makefile文件。

    这里我贴一个简单的Makefile文件的源码:

    BINARY_NAME=hello
    build:
        go build -o $(BINARY_NAME) -v
        ./$(BINARY_NAME)
    

    解释下上面各行的意思:

    • 第一行,声明了一个变量BINARY_NAME他的值是hello,方便后面使用

    • 第二行,声明一个 target,其实你可以理解成一个对外的方法

    • 第三行,这就是这个target被调用时执行的脚本,这行就是build这个项目,编译后的二进制文件放在当前工程目录下,名字是变量BINARY_NAME的值

    • 第四行,这一行就是直接执行当前目录下的二进制文件

    注意:

    第三行,第四行前面一定要用tab键缩进,否者会报下面的错:

    Makefile:3: *** missing separator.  Stop.
    

    构建

    我们打开我们的终端,直接执行:

    make build
    

    就开始构建了,效果如下:

    image

    好了,这次就给大家分享到这里,Makefile的功能很强大,这里只是讲了一丢丢。祝大家有个愉快的周末!

    推荐阅读文献

    • 跟我一起写Makefile

    • Make 命令教程- 阮一峰的网络日志


    欢迎您关注程序员同行者订阅号,程序员同行者是一个技术分享平台,主要是运维自动化开发:linux、python、django、saltstack、redis、golang、docker、kubernetes、vue等经验分享及经验交流。


    **趁现在,关注我们 **

    image

    牛人并不可怕,可怕的是牛人比我们还努力!

    如果您觉得不错,请别忘了转发、分享、点赞让更多的人去学习, 您的举手之劳,就是对小编最好的支持,非常感谢!

    image

  • 相关阅读:
    BZOJ_1095_[ZJOI2007]Hide 捉迷藏_动态点分治+堆
    BZOJ_2216_[Poi2011]Lightning Conductor_决策单调性
    BZOJ_2208_[Jsoi2010]连通数_强连通分量+拓扑排序+手写bitset
    BZOJ_2438_[中山市选2011]杀人游戏 _强连通分量
    BZOJ_3545_[ONTAK2010]Peaks_主席树+倍增+kruscal重构树+dfs序
    BZOJ_1671_[Usaco2005 Dec]Knights of Ni 骑士_BFS
    BZOJ_3566_[SHOI2014]概率充电器_概率+树形DP
    自动驾驶课程学习
    java:String使用equals和==比较的区别
    为什么java的main方法必须是静态的
  • 原文地址:https://www.cnblogs.com/guigujun/p/10702154.html
Copyright © 2011-2022 走看看