首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java makefile基础知识

java makefile基础知识
EN

Stack Overflow用户
提问于 2013-04-02 04:56:08
回答 2查看 7.4K关注 0票数 0

我是java和makefile的新手,我想了解一些关于makefile的介绍性信息。通常在网上找到的信息大多是例子和高层次的。下面是一些关于makefile的具体/天真的问题:

  1. 生成文件的目标是什么类型的文件?.class和.java?
  2. makefile对这些项目文件做了什么?我在Eclipse中完成了我的项目,所以.class文件存储在bin中,.java文件存储在scr中。makefile在这些文件之间建立了什么样的连接?
  3. 生成文件的结果是什么?makefile的目的是告诉编译器如何生成一个可执行文件,所以结果是当前目录中的一个新的可执行文件,是吗?
  4. 我该把它放在哪里?在垃圾箱文件夹里?可控硅文件夹?把所有的苍蝇都放在一个目录下放在那里?
  5. 最后,我为我的项目做了一个小的makefile,它应该编译3个类。不管用,我也不知道为什么

makefile:

代码语言:javascript
复制
JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
    $(JC) $(JFLAGS) $*.java

CLASSES = \
    DNA.java \
    C.java \
    fastmatch.java 

default: classes

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

clean:
    $(RM) *.class

我做错什么了吗?我只是把所有的东西放在一个文件夹下,然后在命令行中输入"make“。我想我错过了一些大的图片,所以如果有人能解释给我听,我会非常感激的。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-02 05:17:31

make不是构建Java的正确工具。您应该使用AntMaven或其他Java构建工具。用make完成任务是可能的,但是对于除了最琐碎的Java程序之外的任何事情,您最终都会得到一个makefile,它每次都会删除所有内容并从头开始重新编译。

在C和朋友的土地上做好工作。在那里,源文件依赖于它导入的所有头,而头不依赖于任何东西(因为它们没有被编译),所以您的依赖树不会太深。在Java中,每个类依赖于它导入的每个类,这些类依赖于进一步的类,因此通常情况下,如果不编译项目中的每个其他类,就无法编译单个类。您可以在makefile中描述这一点,但是在不到一秒钟的时间内完成Ant所做的工作将是冗长的工作。

所有这些都是:

  1. “目标”是makefile正在生成的东西。如果您没有编写编写代码的代码,那么.java文件不是目标
  2. 在您发布的makefile中,.class文件将与相应的.java文件位于相同的位置
  3. makefile的结果基本上可以是任何东西。make本身就是一种相当强大的语言。这个makefile的结果是三个已编译的Java类(可能更多,因为javac可能会找到更多要编译的类,或者您的一些类可能有内部类。同样,这也是为什么make是Java的坏工具的原因)
  4. makefile通常位于根项目目录中。通常,复杂的项目会有其他子目录的makefile。
票数 8
EN

Stack Overflow用户

发布于 2013-04-02 05:15:58

我很难记住我的作品,但我认为你需要:

代码语言:javascript
复制
%.class : %.java
        $(JC) $(JFLAGS) $<
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15756399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档