Makefile中的单个或单个字符是什么

Makefile中的单个或单个字符是什么,makefile,target,Makefile,Target,简短的问题。 在我的工作中,我在Makefile中看到了奇怪的代码 $(DIR)/dir1 $(DIR)/dir2 $(DIR)/dir3: | $(DIR) mkdir -p $$(@) |字符的含义是什么?它将普通先决条件与仅顺序先决条件分开。在制定目标之前,必须存在仅限订单的先决条件,但仅此而已。如果目标的时间戳早于仅限订单的先决条件之一,则不会重新生成目标 在这里,如果$(DIR)不存在,它将在$(DIR)/dir1、$(DIR)/dir2和$(DIR)/dir3之前生成,但是

简短的问题。 在我的工作中,我在Makefile中看到了奇怪的代码

$(DIR)/dir1 $(DIR)/dir2 $(DIR)/dir3: | $(DIR)
    mkdir -p $$(@)

|
字符的含义是什么?

它将普通先决条件与仅顺序先决条件分开。在制定目标之前,必须存在仅限订单的先决条件,但仅此而已。如果目标的时间戳早于仅限订单的先决条件之一,则不会重新生成目标


在这里,如果
$(DIR)
不存在,它将在
$(DIR)/dir1
$(DIR)/dir2
$(DIR)/dir3
之前生成,但是如果它存在并且它的时间戳晚于其中一个subdir,则不会重新生成subdir。

我在手册中使用的是GNU Make 3.81