Makefile 是否支持某种基于文件是否存在的条件依赖?
Do Makefiles support some sort of conditional dependencies based on whether a file exists?
例如,我想做这样的事情:
%.o: %.fast.c # Prefer this if %.fast.c exists
$(CC) $(FASTFLAGS) $< -o $@
%.o: %.slow.c # Only if %.fast.c does not exist
$(CC) $(SLOWFLAGS) $< -o $@
这可能吗?
如果 make 找不到(也无法构建)模式规则的先决条件,那么 make 将不会使用该规则,而是使用另一个规则。考虑从各种来源构建 .o
文件的内置规则(.c
、.cpp
和 .f
等等)。
有关此内容的更多详细信息,请参阅 makefile 的 How Patterns Match 部分。
该手册部分唯一需要注意的是,3.81 之前的 make 没有最短词干规则。这是 3.82 中新增的内容。
例如,我想做这样的事情:
%.o: %.fast.c # Prefer this if %.fast.c exists
$(CC) $(FASTFLAGS) $< -o $@
%.o: %.slow.c # Only if %.fast.c does not exist
$(CC) $(SLOWFLAGS) $< -o $@
这可能吗?
如果 make 找不到(也无法构建)模式规则的先决条件,那么 make 将不会使用该规则,而是使用另一个规则。考虑从各种来源构建 .o
文件的内置规则(.c
、.cpp
和 .f
等等)。
有关此内容的更多详细信息,请参阅 makefile 的 How Patterns Match 部分。
该手册部分唯一需要注意的是,3.81 之前的 make 没有最短词干规则。这是 3.82 中新增的内容。