【问题标题】:GNU Make, generate file with default settings/content when absentGNU Make,在不存在时生成具有默认设置/内容的文件
【发布时间】:2015-04-27 12:18:39
【问题描述】:

如果文件退出,我希望 ma​​ke 将文件从源树复制到目标/构建目录,否则生成一个空/默认文件。

很容易做到以下几点:

target/settings.json: src/settings.json
        cp $? $@

src/settings.json:
        echo "default..." > $@

但这会污染源存储库,其中包含可能无意中签入 RCS 的文件。

是否有一个简单的 make 规则可以在文件退出时复制文件,或者只是使用来自其他来源的命令/副本生成目标?

一个 GNU-Make 特定的解决方案很好

【问题讨论】:

    标签: makefile build-process gnu-make default-value


    【解决方案1】:

    您可以使用$(wildcard) 检查文件是否存在,所以可能是这样的:

    ifeq ($(wildcard src/settings.json),)
        SETTINGS = tmp/settings.json
    else
        SETTINGS = src/settings.json
    endif
    
    target/settings.json: $(SETTINGS)
        cp $? $@
    
    tmp/settings.json:
        echo "default..." > $@
    

    【讨论】:

    • 您可能希望tmp/ 块中的.INTERMEDIATE: $(SETTINGS) 在完成后删除临时文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多