如何在Go中使用Makefile

1.Makefile是什么

Makefile是一种构建工具,用于在项目中定义和执行一系列命令。它通常包含了一些规则和目标,用于编译、测试、运行和清理项目。

2.Makefile可以用于哪些语言的构建过程

Makefile最初是为了 C程序的构建而设计的,但由于其简洁和灵活的特性,在许多其他编程语言和项目中也被广泛使用。
如:
1. C/C++,可以定义编译器选项、链接库、依赖关系等,并执行编译、链接和生成可执行文件的操作。
2. Java,可以定义编译选项、依赖关系和执行Java编译器的命令
3. Python,可以定义自定义的构建目标,例如运行测试、生成文档等
4. JavaScript/Node.js,可以添加自定义的构建目标,例如打包、压缩、部署等
5. Go,Go语言本身具有强大的构建工具(go build、go test等),但对于复杂的构建流程,使用Makefile可以更好地组织和管理多个操作步骤

3.Makefile官方文档

1.GNU Make 官方网站:https://www.gnu.org/software/make/ 这是 GNU Make 官方网站,提供了 Make 的最新版本、文档、下载和支持资源。
2.GNU Make 用户手册:https://www.gnu.org/software/make/manual/ 这是 GNU Make 的用户手册,包含了关于 Makefile 语法、命令、规则和高级用法的详细说明。你可以在这里找到全面的 Makefile 文档。
3.GNU Make 示例:https://www.gnu.org/software/make/manual/html_node/Simple-Makefile.html#Simple-Makefile 这个页面提供了一个简单的 Makefile 示例,可以帮助你入门和理解 Makefile 的基本用法。
4.GNU Make 文件案例库:https://www.gnu.org/software/make/manual/html_node/Automatic-Prerequisites.html#Automatic-Prerequisites 这个页面包含了一些实际项目中的 Makefile 示例和案例,可以帮助你学习和应用 Makefile。

4.在windows系统下使用Makefile

使用Makefile需要安装GUN Make,安装GUN Make需要先安装 gcc

1.安装gcc

    1、首先打开gcc官方网站,https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/,找到如下图版本,此版本是win

    2、64位系统下的gcc包。
    3、解压后放到想放的文件目录下,如下 图 。

    4、根据放置的目录,将bin文件目录,放入系统环境变量Path里面即可,如 图。

    5、使用命令提示符,输入 gcc -v 出现gcc版本即安装成功 。

2.安装GUN Make

    1、首先打开GUN Make下载网站,https://ftp.gnu.org/gnu/make/,下载如图版本。

    2、下载解压后可以看到一个build_w32.bat文件,用文本打开,修改如下图,这里修改的是build_w32.bat编译后make软件的名称。

    3、修改完成后,在此目录下打开命令提示符,运行命令(执行此命令要在build_w32.bat目录下。)

 .\build_w32.bat gcc 

    4、执行完成后会生成GccRel文件夹,如图。

    5、将GccRel文件目录配置到环境变量Path里面,如图。

    6、在命令提示符运行make -v可以查看版本即安装成功。

5.在Go中使用Makefile

# 设置变量
GOCMD = go
GOBUILD = $(GOCMD) build
GOCLEAN = $(GOCMD) clean
GOTEST = $(GOCMD) test
BINARY_NAME = myapp # 默认目标
all: build # 编译应用程序
build:
$(GOBUILD) -o $(BINARY_NAME) -v # 清理生成的二进制文件
clean:
$(GOCLEAN)
rm -f $(BINARY_NAME) # 运行测试
test:
$(GOTEST) -v ./... # 设置 .PHONY 伪目标,用于执行非文件依赖的命令
.PHONY: all build clean test

要使用 Makefile,请确保在项目根目录创建一个名为 Makefile 的文件,并在命令行中使用 make 命令。通过执行 make(或 make all)来编译项目,执行 make clean 来清理生成的文件,以及执行 make test 来运行测试。

小白终于解决了在学习Go中不知道Makefile是什么的难题的更多相关文章

  1. PhpStorm 2016.3 For Mac 重大里程碑更新 -- 终于解决了不能输入中文标点符号的重大bug

    PhpStorm 2016.3 For Mac 重大里程碑更新 1.[终于解决了]不能输入中文标点符号的重大bug,如 逗号“,”.“.”: 2.可以在一个窗体中,同时打开多个项目: 3.其他... ...

  2. 非常的奇葩,终于解决了硬盘从盘盘符消失的问题 http://bbs.gamersky.com/thread-1712710-1-1.html (出处: 游民星空论坛)

    本人用电脑也十多年了,硬盘的问题也碰到过不少.但最近却碰到了一个很奇葩的问题.就是安装了一块全新的SSD硬盘当从盘,但在装上之后,在我的电脑中却不显示,没有盘符.不过打开系统磁盘管理却能显示硬盘信息. ...

  3. Android学习开发中如何保持API的兼容

    Android学习开发中如何保持API的兼容: 1,采用良好的设计思路 在设计过程中,如果能按照下面的方式来进行设计,会让这个API生命更长久 面向用例的设计,收集用户建议,把自己模拟成用户,保证AP ...

  4. 学习Spring中遇到关于BeanFactory及测试类的问题

    最近在学习Spring,使用的是Spring 5.0.1 学习书本中使用的是4.0 学习书本中使用以下来加载配置文件及设置 Resource resource = new ClassPathResou ...

  5. 小白必读:闲话HTTP短连接中的Session和Token

    本文引用了刘欣的文章,感谢原作者的分享. 1.引言 Http协议在现今主流的IM系统中拥有无可替代的重要性(在IM系统中用HTTP发起的连接被大家简称为http短连接),但Http作为传统互联网信息交 ...

  6. 行业干货-如何逆向解决QT程序汉化中乱码问题

    前言 “一款QT开发的国外软件,大概率是没有做中文支持的,所以你汉化中,不论怎么设置编码都一定是乱码.面对这个问题,你去互联网上找答案,答案却大多是复制粘贴的开发中解决乱码的文章,可是我们是要逆向中解 ...

  7. 终于解决了一个Win7 下 VS 编译的问题,困扰了我好几个月

    用 Win7 一年多了,一直在这个环境下编程,其他都挺好,就是有个问题非常恶心,在VS下编译经常出现进程正在使用,无法覆盖的错误,这个问题我记得博问中以前也有其他人遇到过,也没有解决掉.此问题困扰了我 ...

  8. Flink 从0到1学习 —— Flink 中如何管理配置?

    前言 如果你了解 Apache Flink 的话,那么你应该熟悉该如何像 Flink 发送数据或者如何从 Flink 获取数据.但是在某些情况下,我们需要将配置数据发送到 Flink 集群并从中接收一 ...

  9. Zookeeper学习笔记(中)

    Zookeeper学习笔记(中) Zookeeper的基本原理和基本实现 深入了解ZK的基本原理 ZK的一致性: ZAB 协议: Zookeeper 原子消息广播协议 ZK通过选举保证 leader ...

  10. Java小白集合源码的学习系列:LinkedList

    目录 LinkedList 源码学习 LinkedList继承体系 LinkedList核心源码 Deque相关操作 总结 LinkedList 源码学习 前文传送门:Java小白集合源码的学习系列: ...

随机推荐

  1. I-o-C 一篇概览

    一.ioC 容器和 Bean介绍 IoC(Inversion of Control )也被称之为 DI(dependency injection),名称侧重点略有不同. 所谓控制翻转即对象通过构造函数 ...

  2. Apache DolphinScheduler 开源之夏学生项目申请开启,6 大课题等你来拿万元奖金!

    开源之夏 2023 学生报名已经正式开启!Apache DolphinScheduler 今年继续参与开源之夏的活动,2023 年 4 月 29 日-6 月 3 日 15:00 UTC+8,同学们可以 ...

  3. Prompt工程师指南[应用篇]:Prompt应用、ChatGPT|Midjouney Prompt Engineering

    Prompt工程师指南[应用篇]:Prompt应用.ChatGPT|Midjouney Prompt Engineering 1.ChatGPT Prompt Engineering 主题: 与 Ch ...

  4. 3 分钟利用 FastGPT 和 Laf 将 ChatGPT 接入企业微信

    原文链接:https://forum.laf.run/d/556 FastGPT 是一个超级的 ChatGPT 平台项目,功能非常强大: 集成了 ChatGPT.GPT4 和 Claude 可以使用任 ...

  5. L2-035 完全二叉树的层序遍历

    题目描述: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树.对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就 ...

  6. v8 study

    v8环境搭建看这里 现在的v8采用的是Ignition(JIT生成) + TurboFan(优化) v8调试 安装pwngdb git clone https://github.com/pwndbg/ ...

  7. 第一章 Rust基本知识 -- tour of rust

    第一章 基础知识 将探讨函数.变量和最基本的类型等基本知识. 变量 变量使用let关键字来声明. 在赋值时,Rust能够在99%的情况下推断变量类型.如果不能,也可以将类型添加到变量声明中. 注意 如 ...

  8. 2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m、n都是整数,n > 1并且m > 1, 每段绳子的长度记为 k[0],k[1]...k[m - 1]。 请问

    2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m.n都是整数,n > 1并且m > 1, 每段绳子的长度记为 k[0],k[1]...k[m - 1 ...

  9. Java 基础复习——StringBuffer 和 StringBuilder

    StringBuffer 和 StringBuilder StringBuffer 类 简介 java.lang.StringBuffer 代表可变的字符序列,可以对字符串内容进行增删 很多方法和 S ...

  10. Mac pt-online-schema-change 图文并茂、不锁表在线修改 MySQL 表结构、添加表索引、添加表字段、修改表字段、删除表字段

    导读 percona-toolkit 源自 Maatkit 和 Aspersa 工具,这两个工具是管理 MySQL 的最有名的工具,但 Maatkit 已经不维护了,全部归并到 percona-too ...