【问题标题】:Variables based on targets in Makefile基于 Makefile 中目标的变量
【发布时间】:2011-04-11 18:43:05
【问题描述】:

在创建 Makefile 时,我试图弄清楚如何(如果)我可以根据目标更改变量。

所以是这样的:

VER = $(if target=release then 1.0.0 elseif target=nightly then 20110411)

nightly:
    @@echo ${VER} >> version.txt

release:
    @@echo ${VER} >> version.txt

【问题讨论】:

    标签: linux compiler-construction command-line makefile


    【解决方案1】:

    如果您的 make 是 GNU make, Target-Specific Variable 是允许的。
    例如,在您的问题的情况下,以下定义将满足 目的:

    nightly: VER = 20110411
    release: VER = 1.0.0
    
    nightly:
        @echo ${VER}
    
    release:
        @echo ${VER}
    

    希望对你有帮助

    【讨论】:

    • 我一直用你的方法得到这个错误Makefile:6: *** commands commence before first target. Stop. 数字是目标的行号
    • 你的make GNU-make 吗?如果有,版本是多少?当我在 GNU-make 3.80 和 3.81 上测试时,上面的代码有效。如果您的 make 不是 GNU-make,那么很遗憾,答案可能不适用。
    • @Ise Wisteria GNU Make 3.81 这个程序是为 i386-apple-darwin10.0 构建的
    • @Ise Wisteria 使用我拥有的原始代码,您能否进行您建议的更改,以便我查看是否正确实施它们?
    • 如果你的makefile足够小,我也许能找出原因。但是,如果文件不小,我不相信我可以......我的测试代码正好在上面。那么,您可以测试代码并查看结果吗?可能make nightly 会回显20110411,而make release 会回显1.0.0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多