【发布时间】:2019-01-22 23:53:17
【问题描述】:
使用 GNU Make,我想获取一个文件列表并在另一个目录中创建它们的符号链接(具有相同的文件名),但还要覆盖任何具有相同文件名的现有链接。
existing_files = $(wildcard dir1/dir2/*.txt)
# The next line shows where I would want to put the symbolic links
symlinks = $(wildcard new_dir1/new_dir2/*.txt)
make_some_links:
# Remove previous symlinks if they share name as existing_files
ifeq ($(notdir $(existing_files)), $(notdir $(symlinks)))
$(info Removing previous symlinks)
@rm $(symlinks)
endif
# Loop to link here
顺便说一句,上述条件是尝试匹配每个列表的每个元素,还是只有其中一个元素匹配成功?
我不太清楚如何在 Make 中循环,包括使用$(foreach),所以我编写了以下循环来说明我在具有相同变量名的 Python 中的意思。
for i in len($(existing_files)):
@ln -s $(existing_files)[i] $(symlinks)[i]
这里,$(list_files) 中的第一个元素链接到$(symlinks) 中的第一个元素。有关如何在 Make 中编写此循环的任何见解,或者是否有直接的更好方法来解决此问题将非常有帮助。谢谢。
【问题讨论】:
-
我自己没有这样做,但您是否研究过静态模式规则? gnu.org/software/make/manual/html_node/…
标签: makefile gnu-make gnu symlink