gpt4 book ai didi

java - java makefile 基础知识

转载 作者:行者123 更新时间:2023-12-01 07:10:16 26 4
gpt4 key购买 nike

我是 java 和 makefile 的新手,我想要一些有关 makefile 的介绍性信息。通常在网上找到的信息大多是示例和高级信息。以下是我对 makefile 的一些具体/天真的问题:

  1. 什么类型的文件是 makefile 的目标? .class 和.java?

  2. makefile 对这些项目文件有什么作用?我在 Eclipse 中完成项目,因此 .class 文件存储在 bin 中,.java 文件存储在 scr 中。 makefile 在这些文件之间建立什么样的联系?

  3. makefile 的结果是什么? makefile 的目的是告诉编译器如何生成可执行文件,因此结果是在当前目录中生成一个新的可执行文件,是吗?

  4. 我应该将 makefile 放在哪里?在bin文件夹里? scr 文件夹?将所有苍蝇混合在一个目录下并将其放在该目录下?

  5. 最后,我为我的项目制作了一个小型 makefile,它应该编译 3 个类。它不起作用,我不知道为什么:

生成文件:

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”。我想我在这里错过了一些大局,所以如果有人可以向我解释它们,我将非常感激。谢谢

最佳答案

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

在 C 和 friend 的土地上让作品运转良好。在那里,源文件依赖于它导入的所有 header ,而 header 不依赖于任何内容(因为它们不会被编译),因此您的依赖关系树不会太深。在 Java 中,每个类都依赖于它导入的每个类,而这些类又依赖于其他类,因此经常出现这样的情况:如果不编译项目中的所有其他类,就无法编译单个类。您可以在makefile中描述这一点,但是要在不到一秒的时间内完成Ant所做的事情将需要花费数小时的乏味工作。

综上所述:

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

关于java - java makefile 基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15756399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com