符号链接并在Makefile链中制作标志

时间:2016-09-03 17:48:06

标签: makefile symlink flags

我正在使用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,我知道。

所以问题是这个Makefile是在MakeFiles长调用列表中的某个地方运行的,所以我不能用make这个Makefile所需的标志调用make。

只是想知道是否有人看到解决这个问题的方法而不是明显的(显而易见的是不要将符号链接视为目标并且每次只复制它们)。在Makefile中,其他Makefile中定义的几个全局变量也需要可用。

1 个答案:

答案 0 :(得分:1)

您可以修改makefile顶部的MAKEFLAGS variable

MAKEFLAGS += -L