首页 > 解决方案 > ffmpeg Makefile中的“全是”是什么意思

问题描述

在 ffmpeg Makefile 中,

https://github.com/FFmpeg/FFmpeg/blob/master/Makefile#L37

https://github.com/FFmpeg/FFmpeg/blob/master/Makefile#L189

它定义了虚假目标“all”和“all-yes”,但我无法通过搜索整个 ffmpeg 目录找到“all-yes”的先决条件和命令。那么任何人都可以帮助解释“全部是”的确切含义吗?

标签: ffmpegmakefile

解决方案


“include $(SRC_PATH)/fftools/Makefile”中还有另一个“all”目标:https ://github.com/FFmpeg/FFmpeg/blob/master/fftools/Makefile#L30

$(foreach P,$(AVPROGS-yes),$(eval $(call DOFFTOOL,$(P))))
all: $(AVPROGS)
fftools/ffprobe.o fftools/cmdutils.o: libavutil/ffversion.h | fftools
OUTDIRS += fftools

4.11 一个目标的多个规则

一个文件只能执行一个配方。如果多个规则为同一个文件提供了一个配方,make 使用最后一个给定的规则并打印一条错误消息。(作为一种特殊情况,如果文件名以点开头,则不会打印错误消息。这种奇怪的行为只是为了与 make 的其他实现兼容……你应该避免使用它)。有时,让同一个目标调用在 makefile 的不同部分中定义的多个配方很有用;您可以为此使用双冒号规则(请参阅双冒号)。

有两个目标,make只使用最后一个,所以你可以删除“all-yes”或删除“all:all-yes”然后使用“make all”命令,对编译没有影响。命令行“all:all-yes”只是确保“all”是默认目标。


推荐阅读