Make:默认构建目标(终极目标)

相关文章

Make:目标(Target)构建的详细和依赖项的处理过程(个人总结)


默认情况下make命令的构建从第一个没有 . 前缀的目标(target)开始(除非有 . 前缀的目标中有一个或更多 / ,这是GNU make官方手册说的)。实际上,放在第一个的./.target目标也不会被构建,所以更准确的概括是,make命令从不是隐藏文件的目标开始。该目标称为默认终极目标(goal),终极目标是make最终想要更新的的目标。可以使用命令行覆盖makefile的默认终极目标,即将目标名作为参数传递给make命令。当出现多目标的规则时(较少见,一般情况下一个规则就是一个目标),目标列表中的第一个目标是默认终极目标。使用.DEFAULT_GOAL内置特殊变量也可以覆盖makefile的默认终极目标,在没有使用命令行指定终极目标时,设置该变量对应的值可以改变终极目标。

如下代码中,target1是默认终极目标,target2是目标。

复制代码
target1:target2
    @echo "Building target1"

target2:
	@echo "Building target2"

如下代码中,target是默认终极目标。

复制代码
.target:target
    @echo "Building .target"

target:
	@echo "Building target"

如下代码中,在命令行将终极目标改为了target2。

复制代码
target1:target2
    @echo "Building target1"

target2:
	@echo "Building target2"


//以下是CMD
$make target2

如下代码中,终极目标是target1。

复制代码
target1 target2:
    @echo "Building target1 2"

target3:
	@echo "Building target3"

如下代码中,终极目标是target2。

复制代码
.DEFAULT_GOAL = target2
target1:target2
    @echo "Building target1"

target2:
	@echo "Building target2"


//以下是CMD
$make //这里不能指定终极目标

参考资料:GNU Make MANUAL (GNU make Version 4.4.1)

相关推荐
爬也要爬着前进36 分钟前
redis主从搭建
数据库·redis·缓存
敖行客 Allthinker42 分钟前
Parallels Ubuntu虚拟机项目如何让手机访问?完整解决方案
linux·运维·ubuntu
@Mike@1 小时前
02-数据库学习笔记(SQL引擎)
数据库·笔记·学习
keyipatience2 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
j7~2 小时前
【Linux】二十二.《Linux 信号机制完全指南:表示、捕捉与处理》
linux·信号处理·volatile·可入重函数·保存信号
笃行3502 小时前
国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位
数据库
老纪的技术唠嗑局3 小时前
花一年时间整理出的:AI 数据库混合搜索入门实践
数据库
观山岳五楼3 小时前
Ubuntu 24 怎么使用Ubuntu 20 的镜像源
linux·运维·ubuntu
川石课堂软件测试3 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
笃行3504 小时前
国产化落地避坑 · 干货向|迁移后那条「测试能过、一上生产就查空」的 SQL,多半栽在 WHERE 函数顺序上
数据库