【问题标题】:How to exclude a particular file with GNUMake's wildcard function?如何使用 GNUMake 的通配符功能排除特定文件?
【发布时间】:2017-07-03 03:28:50
【问题描述】:

我的项目的目录结构如下:

我的 Makefile 如下所示:

dir1_contents := $(wildcard dir1/*) 
dir3_contents := $(wildcard dir3/*)

all: clean_dir1 clean_dir3

clean_dir1:
    echo 'dir1_contents = $(dir1_contents)'

clean_dir3:
echo 'dir3_contents = $(dir3_contents)'

当我运行 make 时,这是我得到的:

$ pwd
make-test

$ make -s
dir1_contents = dir1/dir2 dir1/file2.junk dir1/file3.junk
dir3_contents = dir3/file4.junk

我想在dir1_contents 中获取dir1 的内容。但我想从该列表中排除 file3.junk。我该怎么做?

也许我应该使用grep -v?但我不确定这是最好的方法。我可以在这里使用内置的 GNUMake 函数吗?

【问题讨论】:

    标签: unix grep gnu-make


    【解决方案1】:

    使用$(filter-out 模式文本 ) text function

     $(filter-out file3.junk,${dir1_contents})
    

    (有人建议使用%/file3.junk 而不是file3.junk,但我相信你不需要那个;我让你去试验)

    【讨论】:

    • 我不认为更正(%/)是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    相关资源
    最近更新 更多