如何在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. Tomcat总体架构,启动流程与处理请求流程

    系列文章目录和关于我 参考书籍<Tomcat架构解析> 一丶Tomcat总体架构 本文沿袭<Tomcat架构解析>中启发式的方式来总结Tomcat总体架构 1 Server S ...

  2. Pwn系列之Protostar靶场 Stack2题解

    (gdb) disass main Dump of assembler code for function main: 0x08048494 <main+0>: push ebp 0x08 ...

  3. nginx配置文件编写及日志文件相关操作

    nginx配置文件编写及日志文件相关操作 目录 nginx配置文件编写及日志文件相关操作 nginx主配置文件扩展详解 部署nginx网站 注意事项 Nginx虚拟主机 nginx配置虚拟主机的三种方 ...

  4. 手机端调试工具vConsole

    vConsole 一个轻量.可拓展.针对手机网页的前端开发者调试面板. vConsole 是框架无关的,可以在 Vue.React 或其他任何框架中使用. 现在 vConsole 是微信小程序的官方调 ...

  5. 2023-03-22:给定一个字符串str, 如果删掉连续一段子串,剩下的字符串拼接起来是回文串, 那么该删除叫做有效的删除。 返回有多少种有效删除。 注意 : 不能全删除,删成空串不允许, 字符串长

    2023-03-22:给定一个字符串str, 如果删掉连续一段子串,剩下的字符串拼接起来是回文串, 那么该删除叫做有效的删除. 返回有多少种有效删除. 注意 : 不能全删除,删成空串不允许, 字符串长 ...

  6. 2022-10-18:以下go语言代码输出什么?A:panic;B:编译错误;C:moonfdd1。 package main import ( “fmt“ “net/url“ ) // 其中

    2022-10-18:以下go语言代码输出什么?A:panic:B:编译错误:C:moonfdd1. package main import ( "fmt" "net/u ...

  7. 2021-02-13:字符串str最少添加多少个字符变成回文串?

    福哥答案2020-02-13: 假设字符串str是"abcde12344321",在str后添加"edcba"即可变成回文串.需要添加5个字符. 解法:包含最后 ...

  8. 2022年第十四届四川省大学生程序设计大赛 A

    A Adjacent Swapping 题意: 给定一个字符串,每次可以移动相邻字符,求最小移动次数可以把它变成s+s这样左右两边相同的字符串. 思路: 1:我们知道他一定是偶数长度,所以我们把字符串 ...

  9. dockder 学习第一篇

    1 docker安装 1 yum包的更新到最新 yum update 2 安装需要软件包,yum-util [root@localhost ~]# yum install -y yum-utils d ...

  10. 【最佳实践】如何设计 RESTful API ?

    良好的 API 设计是一个经常被提及的话题,特别是对于那些试图完善其 API 策略的团队来说.一个设计良好的 API 的好处包括:改进开发者体验.更快速地编写文档以及更高效地推广你的 API.但是,到 ...