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)

相关推荐
不像程序员的程序媛18 小时前
系统cpu内存负载资源分析
运维·服务器·数据库
Jane Chiu19 小时前
Oracle DBMS_REDEFINITION(在线重定义)
数据库·oracle·分区表
全栈前端老曹19 小时前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl
怕孤单的草丛19 小时前
缓存管理面临的主要问题
java·数据库·缓存
Uncertainty!!19 小时前
Ubuntu 22.04 安装超好用中文输入法rime-ice(雾凇拼音)过程记录
linux·ubuntu·中文输入法
我会尽全力 乐观而坚强20 小时前
MySQL零基础入门(二)
数据库·mysql·adb
ShineWinsu20 小时前
对于Linux:网络基础的解析
linux·网络·面试·udp·笔试·ip·tcp
kali-Myon21 小时前
某校园门禁系统高危 SQL 注入漏洞挖掘复盘
数据库·sql·安全·web安全
↘"LYong21 小时前
旧版 CentOS 安装 Docker 完整指南(附国内镜像加速)
linux·运维·docker