【发布时间】:2016-09-03 17:48:05
【问题描述】:
我正在使用 Makefile 将文件和符号链接从源目录结构复制到最终将被制作成文件系统映像的目标目录。这个想法是使用 find 获取每个文件或符号链接的相对路径,然后添加适当的路径前缀来为 cp -a 创建源路径和目标路径。
CW_SOURCES := $(patsubst %,$(SOURCE)/%,$(shell find $(LOCAL_PATH)/filesystem -type f -o -type l))
CW_DESTS := $(subst $(SOURCE)/$(LOCAL_PATH)/filesystem,$(TARGET),$(CW_SOURCES))
$(CW_DESTS): $(TARGET)/% : $(SOURCE)/$(LOCAL_PATH)/filesystem/%
@echo $< to $@
$(eval CW_DIR := $(dir $@))
mkdir -p $(CW_DIR)
cp -a $< $@
只要我调用 make 就可以了
make --check-symlink-times all,
make -L all,
否则 make 不会将符号链接视为对象本身,而是将其视为缺失的依赖项(因为此时符号链接不一定指向任何真实的东西)。
请不要告诉我符号链接不兼容所有平台 make run on,我知道。
所以问题在于,这个 Makefile 在一长串互相调用的 Makefile 列表中的某处运行,所以我不能用这个 Makefile 所需的标志调用 make。
只是想知道除了显而易见的问题之外,是否有人能找到解决此问题的方法(显而易见的是,不要将符号链接视为目标,而是每次都复制它们)。在链上的其他 Makefile 中定义的几个全局变量也需要可用于此 Makefile。
【问题讨论】: