【问题标题】:java makefile dont execute run commandjava makefile不执行运行命令
【发布时间】:2013-09-23 15:33:39
【问题描述】:

我在我的项目中创建了一个 makefile。

JFLAGS = -g
JC = javac
JVM= $(JAVA_HOME)/bin/java
.SUFFIXES: .java .class
.java.class: ; $(JC) $(JFLAGS) $*.java

 CLASSES = \
    Class1.java \
    Class2.java \
    Main.java

 MAIN = Main

 default: classes

 classes: $(CLASSES:.java=.class)

 run : classes $(JVM) $(MAIN).class

下面的代码运行并编译我的 java 类,但不执行我的运行命令。 完成制作文件,不要执行我的运行.. 为什么我的代码做错了?

【问题讨论】:

  • 不要浪费时间尝试使用 make 构建 Java 项目。 Make 在这里做得不好——一旦你将你的类组织在包中,你就完蛋了(你永远不会得到正确的依赖关系)。帮自己一个忙,学习antmaven 的基础知识
  • 我明白你的意思,但我需要这个来了解它是如何工作的。感谢您的回复。

标签: java makefile


【解决方案1】:

Make 只会尝试构建您的 makefile 中的第一个目标(以及该目标的所有先决条件,以及这些目标的所有先决条件等)。选择不同的或多个顶级目标(或“目标目标”),您可以在命令行中指定它们:make run

您可以将run 目标移动到makefile 中的第一个目标,然后它将默认运行。

或者,如果您要运行多个“顶级”目标,则可以在另一条规则中收集它们;例如在上面你可以使用:

default: classes run

尽管按照长期惯例,这个目标被命名为all(但这只是一个惯例)。

【讨论】:

  • 感谢您的回复,您的回答向我展示了有关 makefile 的更多信息,我一直在尝试解决我的问题。是啊。
【解决方案2】:

您需要将“运行”命令添加为“运行”目标的操作,而不是先决条件:

run : classes
        $(JVM) $(MAIN)
#make sure the line above begins with a tab

【讨论】:

  • 谢谢,现在工作,我使用“make run”运行,然后执行我的主类。
猜你喜欢
  • 2023-03-06
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
相关资源
最近更新 更多