首页 > 其他分享 >小白终于解决了在学习Go中不知道Makefile是什么的难题

小白终于解决了在学习Go中不知道Makefile是什么的难题

时间:2023-08-05 18:24:20浏览次数:37  
标签:gcc make Makefile 小白 build Go Make

如何在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 来运行测试。

标签:gcc,make,Makefile,小白,build,Go,Make
From: https://www.cnblogs.com/pocn/p/17608365.html

相关文章

  • golang 接口的概念
    先上代码定义一个接口Retriever两个接口的实现infra.gopackagemainimport( "fmt" "robot.com/Robot/learngo/testing" //"robot.com/Robot/learngo/infra")//?:Somethingthatcan"Get"typeretrieverinterface{ Get(string)s......
  • centos7.9 部署mongodb-4.4.18 分片集群
    准备基本环境名称ip地址cpu内存es监听端口redis-65110.0.2.18c64G9200redis-65210.0.2.28c64G9200redis-65310.0.2.38c64G9200......
  • 记一次因为C#官方扩展导致自动补全出错的情况 (C# & Godot)
    现象最近使用Vscode结合Godot使用时突然发现自动补全出问题了,发现一部分自动补全能弹出补全项目,但是确认后不起作用,还会吞掉弹出自动补全后输入的字符。大概是下图这样的感觉(截图时已修好,图为演示摆拍)线索找了很多办法,有一瞬间我突然发现C#官方扩展的评论区在短期内......
  • Go - go get -u
    zzh@ZZHPC:/zdata/MyPrograms/Go/zapp10$goget-ugo:downloadinggithub.com/XXX/zzhrepo1v1.1.0go:upgradedgithub.com/XXX/zzhrepo1v1.0.1=>v1.1.0 "goget-u"updatesallpackagesinthemoduletothelatestversion."goget-u<......
  • vscode 运行Rust cargo test时显示log输出
    使用以下tasks.json对于log库的输出(info,debug,warn...)需要在test方法上一行加#[test_log::test](来自test-loghttps://crates.io/crates/test-log){"version":"2.0.0","tasks":[{"type":"shell&quo......
  • Django多方式登录认证
    多方式认证原理我们平常使用的Django登录认证是django.contrib.auth.authenticate点进去源码,我们会看到这个函数,真正的认证类是它里面的那个继续点进去源码,会看到ModelBacked类,内部是用户名登录认证校验,它上一层就是基类了,所以我们只要重写这个类的authenticate函数即可。......
  • 从一道面试题来谈谈Golang中的 ==
    写这篇文章的时候,已经离我找工作有一段时间了,但是觉得这道题不管是面试还是日常的工作中,都会经常遇到,所以还是特意写一篇文章,记录下自己对Golang中==的理解。如文章中出现不对的地方,请不吝赐教,谢谢。注意,以下文章内容是基于go1.16.4进行演示的,如果和你验证时,结果不一致,可能Go......
  • Go 介绍
    什么是Go?Go是一个跨平台、开源的编程语言Go可用于创建高性能应用程序Go是一种快速、静态类型、编译型语言,感觉上像动态类型、解释型语言Go由RobertGriesemer、RobPike和KenThompson于2007年在Google开发Go的语法类似于C++Go用于什么?Web开发(服务器端)开发基于网络的......
  • Go 介绍
    什么是Go?Go是一个跨平台、开源的编程语言Go可用于创建高性能应用程序Go是一种快速、静态类型、编译型语言,感觉上像动态类型、解释型语言Go由RobertGriesemer、RobPike和KenThompson于2007年在Google开发Go的语法类似于C++Go用于什么?Web开发(服务器端)开发基于网络的......
  • Celery在Django项目中集成
    使用celery第一件要做的最为重要的事情是需要先创建一个Celery实例对象,我们一般叫做celery应用对象,或者更简单直接叫做一个app。app应用对象是我们使用celery所有功能的入口,比如启动celery、创建任务,管理任务,执行任务等.celery框架有2种使用方式,一种是单独一个项目目录,另一种就是......