首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

使用go build 开展条件编译

2013-10-14 
使用go build 进行条件编译当我们编写的go代码依赖特定平台或者cpu架构的时候,我们需要给出不同的实现C语

使用go build 进行条件编译

当我们编写的go代码依赖特定平台或者cpu架构的时候,我们需要给出不同的实现


C语言有预处理器,可以通过宏或者#define包含特定平台指定的代码进行编译


但是Go没有预处理器,他是通过 go/build包 里定义的tags和命名约定来让Go的包可以管理不同平台的代码


这篇文章将讲述Go的条件编译系统是如何实现的,并且通过实例来说明如何使用


1. 预备知识:go list命令的使用

在讲条件编译之前需要了解go list的简单用法

go list访问源文件里那些能够影响编译进程内部的数据结构

go list与go build ,test,install大部分的参数相同,但是go list不会执行编译操作。使用-f参数可以让我们提供的text/template里的代码在包含go/build.Package上下文的环境里正确执行(就是让go/build.Package里的上下文去格式化 text/template里这种格式 '{{.GoFiles}}'里的占位符,写过http server程序的同学看到应该很熟悉)


使用格式化参数,我们能通过go list获取将会被编译的文件名

% grep '+build' $HOME/go/src/pkg/os/types_notwin.go // +build !windows


5. 总结

这篇文章主要关注所有可以被go tool编译的go源文件,编译标签和文件后缀名(也包括了.c 和.s文件)

Go的标准库里包含了很多的样例,特别是runtime,syscall,os和net包,读者可以通过这些包来学习


Test文件也支持编译标签和文件后缀条件编译,并且作用方式与go源文件相同。可以在不同平台下有条件的包含一些测试样例。同样,标准库也包含了大量的例子


最后,这篇文件是讲如何用go tool来达到条件编译,但是条件编译不限于go tool,你可以用go/build包编写自己的条件编译工具


热点排行