首页 / JAVA / makefile for java
makefile for java
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了makefile for java,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1072字,纯文字阅读大概需要2分钟。
内容图文
![makefile for java](/upload/InfoBanner/zyjiaocheng/747/2ab454c2bcf54285aa09d76577fe6888.jpg)
我不明白我的makefile做错了什么:
JAVA_SRCS:=$(wildcard tasks/src/*.java) JAVA_CLASSES=$(subst /src/,/build/,$(JAVA_SRCS:.java=.class)) JFLAGS=-cp jar/octobot.jar -d tasks/build JC=javac .SUFFIXES: .java .class .java.class: $(JC) $(JFLAGS) $*.java default: build build: $(JAVA_CLASSES) clean: $(RM) tasks/build/*.class
我收到了这个错误:
make: *** No rule to make target `tasks/build/ClickTask.class', needed by `classes'. Stop. zsh: exit 2 make
但奇怪的是,当我重写这样的规则构建时:
build: $(JAVA_SRCS:.java=.class)
没有错误,规则启动但每次都执行(并且它不正确)
解决方法:
@Dean Povey是正确的:您不能使用后缀规则执行此操作,因为它们与源相同的目录.但是,您可以使用GNU Make模式规则执行此操作(并且您已经在Makefile中使用GNUMake-isms,所以无论如何):
tasks/build/%.class: tasks/src/%.java
$(JC) $(JFLAGS) $<
但请注意,make不适合构建java源代码,因为一个.java文件可能会导致许多.class文件(例如内部类). Automake解决此问题的方法是在一次调用javac中编译所有内容并写出时间戳文件(例如,echo timestamp> classnoinst.stamp).然后,任何需要构建java源的东西都依赖于该戳记文件,并且make clean会删除.stamp以及.class文件.
内容总结
以上是互联网集市为您收集整理的makefile for java全部内容,希望文章能够帮你解决makefile for java所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。