【问题标题】:gnu make, vpath rule, all but one filegnu make,vpath 规则,除了一个文件之外的所有文件
【发布时间】:2013-07-25 12:22:56
【问题描述】:

碰巧需要从一个文件夹编译所有 *.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

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

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

【问题讨论】:

  • 这样用vpath好像没什么用。如果您必须为每个单独的文件指定路径,为什么不直接使用路径名。
  • 因为该路径上有一个文件与我在本地拥有的同名文件。我想要我的文件,以及该文件夹中除该文件之外的所有文件。粗略的解决方法是删除重复文件,但这是来自第 3 方的 pdk,我不想从中删除文件。
  • 是的,我明白了,我是说为什么要使用 vpath?我会写一个答案。

标签: gnu gnu-make


【解决方案1】:

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

由于您没有提供有关您如何处理源文件的任何其他信息,因此我无法给出完整的示例,但是您为什么不做类似的事情:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多