我试图在make项目中列出所有相关的源文件,以便过滤掉在单元测试期间生成的代码覆盖率报告的相关部分。
到目前为止我的解决方案运行良好,但有一个缺陷,即它不会列出子目录中的文件。它仅列出指定目录的根目录中的文件。
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 :(得分: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)')))
循环遍历扩展和目录,并使用find检索文件。也许不是最有效的方式,但它确实存在。