【发布时间】:2021-08-10 16:01:48
【问题描述】:
我有一个包含很多包含源文件的子目录的目录。因此,我正在寻找 .c 文件的每个子目录:cSources = $(shell dir /s /b *.c)
但是,有些子目录包含我不想编译的源文件。如果我有一个变量 dirToExclude = dirName 我如何删除 cSources 中包含 'dirName' 的每个字符串?
我知道有findstring-函数。但我不知道如何在数组中的每个字符串上使用findstring。我正在寻找某种方法来获得像(伪代码)这样的嵌套循环:
foreach (var in cSources)
if (var.contains(dirToExclude))
cSources -= var
endif
【问题讨论】:
-
不使用模式匹配来识别您的来源怎么样?这样做是一种反模式。
-
@JohnBollinger 也许你能给我一个更好的解决方案的提示?
-
常规方式是明确列出相关源文件或其对应的目标文件,然后从那里开始。如果想区分不同的源文件集,则可以使用多个变量,或者可能使用递归
make和多个 makefile。