【问题标题】:How to split $(MAKECMDGOALS) by whitespace如何用空格分割 $(MAKECMDGOALS)
【发布时间】:2016-07-31 19:32:23
【问题描述】:

可能有更好的方法来做到这一点(如果有,请告诉我),但我正在尝试制作,这样我就不必每次都输入这么多我想编译并运行我的程序。我可能会收到一些关于使用 Makefile 编译和运行我的 Java 程序的 cmets,这很好。如果我真的在开发 Java 应用程序,我会使用 IDE。这只是课堂作业。

我正在尝试将我的参数从命令行传递到我的 Makefile。
假设我想运行这个命令:

java Driver -n $(arg1) -h $(arg2)

这是我目前所拥有的,但它不起作用

arg1 = `echo $(MAKECMDGOALS) | awk {$$1}`

理想情况下,我只需要输入make 1 2,这将运行java Driver -n 1 -h 2

【问题讨论】:

    标签: java awk makefile


    【解决方案1】:

    真的与 Make 的工作方式相反。但如果你坚持,这里是:

    arg1 := $(word 1,$(MAKECMDGOALS))
    arg2 := $(word 2,$(MAKECMDGOALS))
    
    null:
        java Driver -n $(arg1) -h $(arg2)
    
    %:null
        @:
    

    【讨论】:

    • 你能解释一下 make 应该如何工作吗?或者你到底是什么意思?我一直只是使用 make 来轻松编译和运行我的程序。 Makefile 不就是一堆命令的执行吗? @Beta
    • @J-Win:Make 的普通参数应该是目标名称,而不是其他类型的参数。传递参数的语法是make arg1=1 arg2,如果你想让make 1 2有同样的效果(节省打字),那么你会得到一个像我上面写的那样奇怪的makefile。
    • 有道理。我想我会接受它并这样做
    猜你喜欢
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2012-09-22
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多