【问题标题】:Makerule only runs one ruleMakerule 只运行一个规则
【发布时间】:2013-02-11 06:44:57
【问题描述】:

我正在尝试编写我的第一个 Makefile。我目前只有 3 条规则。当我运行“make”时,只执行第一个规则,然后 make 退出而不运行其他 2。我的 Makefile 没有什么复杂的。我什至尝试将规则数量减少到 2,但我得到了相同的结果。这是我目前所拥有的。

SRC = src/analytics.js

lint:
    jshint $(SRC)

build: $(SRC)
    cat $^ > build/analytics.js

min: build
    uglifyjs --no-mangle build/analytics.js > build/analytics.min.js

当我在这里运行 make 时,我得到的消息是 lint 规则已执行:jshint src/analytics.js

我在 Mac OS 10.8.2 上运行 make 3.81。

【问题讨论】:

    标签: makefile


    【解决方案1】:

    当您只运行“make”时,make 将只执行默认目标,该目标通常是第一个目标 - 在您的情况下为“lint:”。

    如果 'lint' 有依赖关系,那么你需要列出它们。例如:

    lint: dep1 dep2
    

    Make 会在执行 lint 之前执行 dep1 和 dep2。

    如果您希望通过一次调用“make”即可运行上述所有三件事,请将此目标添加到您的其他目标之上:

    all: lint build min
    

    您可以按照您希望它们发生的顺序放置它们。我称目标为“全部”,因为这就是它的作用,而不是意味着它有什么特别的意义。

    【讨论】:

    • 值得一提的是,如果您有一个不代表实际文件的目标名称,您应该将目标标记为假,.PHONY: all
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2021-02-03
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多