You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Makefile规则过滤Go项目C文件?现有Go文件过滤是否正确?

问题解答

一、当前Go文件过滤方式是否正确?

不正确,核心问题有两点:

  1. 匹配范围遗漏:你的wildcard仅匹配了项目根目录的*.go和./subpackage/*.go文件,但需要过滤的./never/gonna/give.go、./never/gonna/give_you_up.go位于never/gonna目录下,根本没被纳入构建文件列表,导致filter-out操作完全无效。
  2. 路径写法本身没问题:如果后续补上./never/gonna/*.go的wildcard匹配,当前filter-out里的路径格式是正确的,只要wildcard能命中目标文件,就能完成过滤。

修正后的文件匹配部分应补充目标目录:

$(wildcard *.go) $(wildcard ./subpackage/*.go) $(wildcard ./never/gonna/*.go)

二、如何过滤C文件?

不需要额外做过滤操作,原因如下:

  • 当前构建命令里的wildcard只匹配.go后缀的文件,give.c、give.h这类C相关文件根本不会被加入go build的参数列表。
  • go build默认不会主动编译C文件,只有启用cgo且代码中存在import "C"时,才会自动处理关联的C文件,这属于cgo的编译逻辑,无需通过文件路径过滤控制。若需排除特定C文件,通常是在cgo的编译标签或CFLAGS中配置,而非在go build的文件列表里操作。

内容的提问来源于stack exchange,提问作者Navidk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 00:47:40