2014-11-24 19 views
0

我想列出一个生成项目的所有相关的源文件,使单元测试过程中生成的代码覆盖率报告的相关部分可以被过滤掉某个目录下的所有源文件。如何列出使用使

我的解决方案,到目前为止运行很好,但它不会在子目录中列出文件的缺陷。它只列出指定目录的根目录中的文件。

USER_DIR被设置为源文件的位置。它可以包含多个目录。然后下面的行会创建一个用来从代码覆盖率报告筛选出相关的文件列表:

SRCEXTS = .c .cc .cpp 
HDREXTS = .h .H .hh .hpp .HPP .h++ .hxx .hp 

SW_SOURCE := $(foreach d,$(USER_DIR),$(wildcard $(addprefix $(d)/*,$(SRCEXTS)))) 
SW_HEADERS := $(foreach d,$(USER_DIR),$(wildcard $(addprefix $(d)/*,$(HDREXTS)))) 

我怎么会改变我的解决方案,因此,它也是在user_dir的所有子目录的文件找到?另外,当然,如果有一个更好的方法来做这件事,而不是那些我也会感兴趣的foreach,但我想我会保留列表的格式。

+0

看看[这](http://stackoverflow.com/questions/4036191/sources-from-subdirectories-in-makefile)。 – Beta 2014-11-24 06:52:33

+0

[GNU make中的递归通配符可能的重复?](http://stackoverflow.com/questions/2483182/recursive-wildcards-in-gnu-make) – reinierpost 2014-11-24 08:36:02

回答

0

这是我落得这样做:

SW_SOURCE := $(foreach ext, $(SRCEXTS), $(foreach d, $(USER_DIR), $(shell find $(d) -name '*$(ext)'))) 
SW_HEADERS := $(foreach ext, $(HDREXTS), $(foreach d, $(USER_DIR), $(shell find $(d) -name '*$(ext)'))) 

遍历扩展和目录,并查找检索文件。也许不是最有效的方式,但它是。