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

FreeBSD下GNU Make拆分版本号后变量为空是什么原因?

Makefile变量为空问题原因分析

核心原因是FreeBSD环境下默认make命令的语法不兼容你编写的GNU Make规则:

  • FreeBSD系统自带的默认构建工具是BSD Make,你代码中用到的subst、word属于GNU Make专属的字符串处理函数,BSD Make无法识别这类函数语法,解析V1、V2变量时函数调用不会被执行,直接返回空值,因此最终生成的文件名里变量位置为空。
  • 你虽然已经安装了GNU Make 4.2.1,但执行构建时没有调用对应的gmake命令,才会触发该问题。

修复方案

直接使用GNU Make对应的命令执行构建即可得到预期结果:

gmake hello

如果需要适配BSD Make的语法,可改用系统命令实现变量拆分,示例如下:

VER := 13.1-9.6
# 调用shell的cut命令拆分版本号
V1 != echo ${VER} | cut -d '-' -f 1
V2 != echo ${VER} | cut -d '-' -f 2
hello:
	cp ./path/file.txt ./path/file_${V1}.txt
	cp ./path/file.txt ./path/file_${V2}.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:51:03