2014-11-24 37 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)'))) 

遍歷擴展和目錄,並查找檢索文件。也許不是最有效的方式,但它是。