我必须使用 makefile 才能将文件夹 1 的所有内容复制到文件夹 2 中。文件夹 1 的内容是 5 个文件,名称分别为 abc_1.c、abc_2.c、.. 等。 文件夹 1 和 2 的路径都作为 makefile 中的变量给出,然后给出复制命令。 问题是,即使使用通配符功能后,我也可以将整个文件夹 1 复制到文件夹 2 中,而不是文件夹 1 的内容。 请帮助我建议一种将文件夹 1 的内容复制到 2 而不是整个文件夹的方法。
以下是我最初使用的代码片段:
PATH_1 =/ace/1/*
PATH_2 =/ace/2/
要复制的代码:shell cp -rf ("$(PATH_1)") ("$(PATH_2)")
请不要介意上面的代码行。
主要问题出现在 PATH_1 中,因为“*”未正确解析且内容未复制。从 PATH_1 中删除“*”后,代码可以正常工作,但它再次将整个文件夹 1 复制到文件夹 2 中。
后来我将Path_1修改如下:
PATH_1 =/ace/1/(通配符 abc_*.c)
还是一样,整个文件夹 1 被复制到文件夹 2 中。 请帮我解决这个问题。
最佳答案
尝试以下几行:
PATH1=/ace/1
PATH2=/ace/2
C_SRCS=$(wildcard $(PATH1)/abc_*.c)
copy:
cp -vi ${C_SRCS} $(PATH2)
复制选项 v
用于详细信息,i
用于交互,如果您愿意,可以忽略。
此规则将失败并出现错误,C_SRCS
为空,以防止您在这些行上拥有稍微健壮的规则:
copy:
for C_SRC in ${C_SRCS}; do \
cp -vi $$C_SRC $(PATH2); \
done
希望这有帮助!
关于linux - 在 Makefile 中正确使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7801405/