`
sofire
  • 浏览: 146144 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Go语言的Makefile实例

阅读更多
(待持续更新的文章)

Go现在用的是 gomake来编译程序。大致方法和用make差不多,没去细究和make有啥差别。
简单使用的话,两者可以换用。如: gomake install <==> make install

自己对 Makefile文件不是那么熟悉,所以收集一些简单的Makefile实例。
有些是go src里面带的,有些是从开源Go项目中带的。再次一并感谢之。。

参考资料:
http://golang.org/doc/code.html

编译单个文件:
include $(GOROOT)/src/Make.inc

TARG=helloworld
GOFILES=\
	helloworld.go\

include $(GOROOT)/src/Make.cmd


编译多个文件(一个.go文件生成一个应用程序):
include $(GOROOT)/src/Make.inc

ALL=a1 a2

all: $(ALL)

clean:
	rm -rf *.[68] $(ALL)

%: %.go
	$(GC) $*.go
	$(LD) -o $@ $@.$O


编译包
include $(GOROOT)/src/Make.inc

TARG=mypackage
#TARG=mypackage/mysubpackage
GOFILES=\
	my1.go\
	my2.go\

include $(GOROOT)/src/Make.pkg

注意差异: include $(GOROOT)/src/Make.pkg

上面两个文件的使用方法:
# gomake #编译,可以用 make(下同)
# gomake install #安装
# gomake test  #单元测试
# gomake clean #清楚本地文件,无法清楚安装文件,即没有make uninstall

cgo文件的编译:
nclude $(GOROOT)/src/Make.inc

TARG=goblog/rand
CGOFILES=\
   rand.go\

include $(GOROOT)/src/Make.pkg


include ../../../src/Make.inc
  
TARG=runtime/cgotest  
  
CGOFILES=\  
    align.go\  
    basic.go\  
  
CGO_OFILES=\  
    callback_c.o\  
  
OFILES=\  
    runtime.$O\  
  
include ../../../src/Make.pkg  

参考:http://cheesesun.blogspot.com/2009/12/basic-cgo.html

include $(GOROOT)/src/Make.inc

TARG=gocurses
CGOFILES=\
        gocurses.go\

#GOFILES=\
#        main.go\

CGO_LDFLAGS=-lncurses

CLEANFILES+= $(TARG) main 
CGO_OFILES+= 
OBJECTS = main.go talkmore.go

include $(GOROOT)/src/Make.pkg

main: install main.go talkmore.go
	$(GC) $(OBJECTS)
	$(LD) -o $(TARG) main.$O

%: install $(OBJECTS)
	$(GC) $(OBJECTS)
	$(LD) -o $(TARG) main.$O


参考:http://blog.golang.org/2011/03/c-go-cgo.html

分享到:
评论

相关推荐

    Go-Go项目的Makefile示例

    在Go语言的开发环境中,`Makefile`是一个非常重要的工具,它可以帮助开发者自动化构建、测试和部署项目。本文将深入探讨Go项目的`Makefile`示例及其相关知识点,旨在提高Go开发者的工程化能力。 首先,`Makefile`是...

    基于 Go 语言构建企业级的 RESTful API 服务.pdf

    ### 基于 Go 语言构建企业级的 RESTful API 服务 #### 一、概述 本文档旨在介绍如何利用 Go 语言构建一个稳定、高效的企业级 RESTful API 服务。Go 语言以其简洁的语法、强大的并发能力及内置的 HTTP 服务器库等...

    cgss-Go语言在线游戏项目例子

    Go语言,也称为Golang,是由Google开发的一种静态类型的、编译式的、垃圾回收的、并发型且具有C/C++风格语法的编程语言。Go语言以其简洁的语法、高效的性能以及对并发处理的良好支持,受到了许多开发者的青睐,特别...

    开源项目-golang-go.zip

    总之,开源项目-golang-go.zip提供了Go 1.5版本的一个实例,对于学习和研究Go语言的开发、设计原则以及并发编程等核心概念,都是非常宝贵的资源。通过深入研究这个项目,开发者不仅可以提升Go语言的编程技巧,还能...

    Go-基于golang的monorepo的一个例子

    Go语言本身支持模块化开发,通过`go.mod`文件管理依赖。在Monorepo中,可以为每个子项目创建单独的`go.mod`文件,以维护每个项目的独立性。同时,由于Go的构建系统天然支持多包结构,所以Go非常适合实现Monorepo。 ...

    开源项目-murlokswarm-app.zip

    总之,开源项目-murlokswarm-app.zip提供了一个使用Golang构建MacOS应用程序的实例,这对于想学习Go语言和MacOS应用开发的开发者来说是一个宝贵的资源。通过研究该项目,你可以深入理解Go语言的跨平台能力,以及如何...

    archive_ mayfly-go v1.5.1 [江西新余电信].zip.zip

    【标题】"archive_ mayfly-go v1.5.1 [江西新余电信].zip.zip" 提供的信息表明,这...对于开发者来说,这个压缩包提供了一个了解和使用Go语言与MySQL数据库交互的实例,无论是学习、开发还是调试,都是宝贵的参考资料。

    开源项目-alexflint-go-restructure.zip

    这个项目的目标是简化在Go语言中处理复杂数据结构时的正则表达式工作,为开发人员带来更方便、更安全的编程体验。 在Go语言中,正则表达式通常用于处理字符串,但当需要与复杂的数据结构(如结构体)结合使用时,...

    开源项目-flowerinthenight-golang-monorepo.zip

    本篇文章将围绕开源项目“flowerinthenight-golang-monorepo”进行深入探讨,该项目是基于Go语言实现的Monorepo实例,旨在帮助开发者理解并掌握Monorepo的优势和实践策略。 首先,我们来理解一下什么是Monorepo。...

    omnios-golang-源码.rar

    Golang,也被称为Go语言,是由Google开发的一种静态类型、编译型、并发型、垃圾回收机制的编程语言。Go语言的设计目标是提高开发效率,同时保持代码的简洁性和可读性。本资料“omnios-golang-源码.rar”提供了在...

    golang grpc demo

    【标题】"golang grpc demo" 是一个使用Golang实现的gRPC示例项目,它展示了如何在Go语言中构建和使用gRPC服务。gRPC是一个高性能、开源和通用的RPC框架,它基于HTTP/2协议,支持多种编程语言,包括Golang。这个demo...

    开源项目-microo8-wallgen.zip

    Go语言,又称Golang,是Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。它的设计目标是简单、高效,特别适合构建网络服务和分布式系统。Go语言的语法简洁明了,拥有内置并发机制,使得处理...

    开源项目-dop251-goja.zip

    这个项目名为"Goja",意味着它用Go语言(Golang)实现了JavaScript的执行环境。在深入探讨这个项目的细节之前,我们首先来了解一下ECMAScript和Go语言的基础知识。 ECMAScript(简称ES)是JavaScript语言的标准,由...

    learning-go:Golang 学习的东西

    在本项目"learning-go"中,我们主要关注的是Golang(Go语言)的学习。Go语言是由Google开发的一种静态类型的、编译式的、并发的、垃圾回收的、具有C风格语法的编程语言。它旨在提高软件的简洁性、可读性和效率,特别...

    开源项目-laktak-hjson-go.zip

    开源项目-laktak-hjson-go.zip是一个包含Go语言实现的HJSON库的开源项目,由开发者laktak创建。HJSON(Human JSON)是一种旨在使人类可读写性更强的JSON扩展格式。它在标准JSON的基础上增加了注释、空格和逗号的宽松...

    开源项目-Skarlso-go-furnace.zip

    Furnace是用Go语言编写的,这表明该项目充分利用了Go语言的高效性和跨平台特性,旨在提高开发者在AWS(Amazon Web Services)环境中的工作效率。 CloudFormation是AWS提供的一个服务,用于自动化创建、更新和管理...

    开源项目-micromdm-scep.zip

    【开源项目-micromdm-scep.zip】是一个与开源领域相关的压缩包,主要涉及的是SCEP(Secure Certificate Enrollment Protocol)服务器和库的实现,该实现是用Go语言编写的。SCEP是一种用于安全地分发和管理数字证书的...

    开源项目-rooby-lang-rooby.zip

    Rooby是一种开源的编程语言,它的设计灵感来源于Ruby,但其内部实现是用Go语言编写的。这个项目,名为"rooby-lang-rooby.zip",旨在提供一种与Ruby语法相似的面向对象的语言,同时利用Go语言的强大性能和跨平台特性...

Global site tag (gtag.js) - Google Analytics