小编use*_*621的帖子

Makefile - 遍历列表并选择特定值

我正在尝试做这样的事情(假设 $input 是用户提供的):

LIST = pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8 pre9 pre10
START = 0

for prefix in $(LIST); do \
    if $(input) == $(prefix) then
        START = 1
    endif \
    if $(START) == 1 then \
        if [ -f  $(prefix)<file_name> ]; then <do_A>; else <do_B>; fi
    endif \
done
Run Code Online (Sandbox Code Playgroud)

我的问题是上面提到的两个 if。我不知道如何在迭代时从列表中选择特定的字符串值(如果 $(input) == $(prefix) then)并且我不知道如何检查值是 1 还是 0(如果 $(START) == 1 那么)。

我对这段代码的意图是对具有相同文件名但具有不同前缀的不同目录使用相同的 makefile。有时,一个目录可能包含具有不同前缀的文件的多个版本,我想定义这些前缀的层次结构(在我的示例中由 LIST 定义)。当用户提供一个版本时,想法是从他提供的版本开始搜索最新版本(例如,如果用户提供 pre4,那么我需要先搜索 pre4,如果它不存在 - 我将继续搜索 pre5 等等。但在此示例中,即使 pre1 确实存在于当前目录中,我也不会搜索它)。

任何人都知道我该怎么做?

提前致谢。

foreach for-loop if-statement makefile list

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

for-loop ×1

foreach ×1

if-statement ×1

list ×1

makefile ×1