【发布时间】:2012-04-13 16:55:46
【问题描述】:
一旦我对 makefile 进行了一些更改,运行它后我就有了以下 makefile,现在当我运行它时,我得到一个“make: Nothing to be done for `default'”。我怎样才能强制它重建?我执行“make”和“make clean”,当我输入“make”时仍然收到错误消息。
另外,我如何将 src 目录中的 log4.properties 文件复制到目标目录(在 make 文件和命令行中:javac -classpath src:lib/log4j-1.2. 16.jar src/*.java -d bin)?
# # 定义编译器和编译器标志变量 # JFLAGS = -g -cp .:src:lib/log4j-1.2.16.jar JC = javac # # 清除任何用于从 .java 文件构建 .class 文件的默认目标;我们 # 将在此生成文件中提供我们自己的目标条目来执行此操作。 # make 有一组不同后缀的默认目标(如 .c.o) # 目前,不需要清除 .java.class 的默认值,因为 # make 没有这个目标的定义,但是更高版本的 # make may,所以确保我们清除任何默认值并没有什么坏处 # 这些的定义 # .后缀:.java .class # # 这是我们从 .java 文件创建 .class 文件的目标条目 # 这是一个使用后缀规则语法的目标条目: #DSTS: # 规则 # 'TS'是目标文件的后缀,'DS'是依赖的后缀 # 文件,'rule' 是构建目标的规则 # '$*' 是一个内置宏,用于获取当前目标的基本名称 # 记住命令行前必须有a ('rule') # .java.class: $(JC) $(JFLAGS) $*.java # # CLASSES 是一个由 4 个单词组成的宏(每个 java 源文件一个) # 课程 = \ 源代码/MatrixDriver.java \ 源代码/ConcreteMatrix.java \ 源/矩阵.java \ src/Submatrix.java # # 默认的 make 目标条目 # 默认:类 # # 此目标条目在宏中使用后缀替换: # $(名称:string1=string2) # 在名为 'name' 的宏中将 'string1' 替换为 'string2' # 下面我们替换宏CLASSES中所有单词的后缀.java # 带有 .class 后缀 # 类:$(CLASSES:.java=.class) # # RM 是 make 中预定义的宏 (RM = rm -f) # 清洁:力 $(RM) *.class 力量:【问题讨论】:
-
我为输出目录添加了-d bin,但只是将其取出。我仍然在做:“默认”无事可做。
-
有点跑题了,但你可能想看看更针对 Java 的构建工具,例如蚂蚁或 Maven。一旦获得多个依赖项,能够将
**/*.jar放在类路径上会非常方便。 -
只是想插话 Maven ——绝对是为了你的理智而走的路,我...