虽然大多数Go程序员使用go工具,但还有其他构建系统,如Bazel。为了构建现有的Go代码,这些构建系统必须以与go工具相同的方式分析构建约束。对于大多数目的,可以通过调用go/build.*Context.MatchFile来实现。然而,有一个情况没有被该API处理:使用cgo的文件中的#cgo
指令。在特殊的注解ad中出现一个#cgo
directive,看起来像#cgo
,是一个可选的构建约束、一个标志名、一个冒号和一个标志列表。像Bazel这样的构建工具需要一种机制,将使用cgo的文件返回适用于当前环境的任何#cgo
标志。目前,这些工具必须通过自己重新创建构建约束评估过程来实现这一点。go/build包已经包含了为go工具执行此操作的代码,但它没有以可用的形式暴露;它只作为创建go/build.Package
的一部分暴露,但这假设了go工具使用的目录布局,而不是Bazel。
我建议我们向go/build添加一个新的导出方法,类似于现有的saveCgo
方法。
5条答案
按热度按时间jaxagkaj1#
/cc @matloob
z8dt9xmd2#
此建议已添加到建议项目中的活动列,并将在每周的建议审查会议上进行审查。
— rsc 建议审查组
u3r8eeie3#
等待@matloob确定API提案。
xghobddn4#
让我们将此暂停,以便更新API提案。
zz2j4svz5#
已挂起。
— rsc提案审查组