gnu make,vpath规则,除了一个文件之外的所有文件

时间:2013-07-25 12:22:56

标签: gnu gnu-make

它恰好需要从一个文件夹中编译所有* .c文件,除了一个文件夹,它具有完全相同的名称并从其他地方编译。我解决了为每个我想要的文件提供vpath

vpath   plant.c $(KMLROOT)/examples/$(KML_FLAVOUR)/pdk
vpath   app.c $(KMLROOT)/examples/$(KML_FLAVOUR)/pdk
vpath   app_test.c $(KMLROOT)/examples/$(KML_FLAVOUR)/pdk
vpath   app_echo.c $(KMLROOT)/examples/$(KML_FLAVOUR)/pdk

现在,如果我写

vpath   %.c $(KMLROOT)/examples/$(KML_FLAVOUR)/pdk

我不想包含的文件将在路径上。

有可能编写一些规则并排除特定文件吗?

1 个答案:

答案 0 :(得分:0)

如果您需要为每个文件提供特定路径,那么vpath就没用了。

由于您没有提供有关您对源文件执行操作的任何其他信息,因此我无法提供完整的示例,但为什么不执行以下操作:

KMLSRC = plant.c app.c app_test.c app_echo.c

KML_FULLSRC = $(addprefix $(KMLROOT)/examples/$(KML_FLAVOUR)/,$(KMLSRC))