Makefile 中的单个 OR 字符是什么意思

What does single OR character in Makefile

简短的问题。 在我的工作中,我在 Makefile

中看到了奇怪的代码
$(DIR)/dir1 $(DIR)/dir2 $(DIR)/dir3: | $(DIR)
    mkdir -p $$(@)

|字符是什么意思?

它将正常先决条件与仅订单先决条件分开。在制定目标之前必须存在仅订单先决条件,仅此而已。如果目标时间戳早于仅订单先决条件之一,则不会重新制作目标。

这里如果$(DIR)不存在,会在$(DIR)/dir1$(DIR)/dir2$(DIR)/dir3之前创建,但如果存在且时间戳晚于子目录之一,子目录不会被重新制作。