我有三个需要同时编译的程序,2个用C编写,1个用java编写。当他们在C中时,我让所有三个人都使用Makefile,但是后来在java中重写了其中一个...有没有办法用同一个makefile一次编译所有3个?
这是我当前的Makefile:
CC=gcc
JC=javac
JFLAGS= -g
CFLAGS= -Wall -g -std=c99
LDFLAGS= -lm
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
CLASSES = kasiski.java kentry.java
ALL= ic ftable kasiski
all: $(ALL)
ic: ic.o
kasiski: $(CLASSES:.java=.class)
ftable: ftable.o
ic.o: ic.c ic.h
ftable.o: ftable.c ftable.h
.PHONY: clean
clean:
rm -rf core* *.class *.o *.gch $(ALL)
答案 0 :(得分:3)
是的,你可以一次编译它们。如果你的“所有”目标取决于所有三个应用程序,那么“make all”应该构建所有这些应用程序。您可以使用三个单独的线程和/或进程来引入“-j3”进行实际编译(不清楚“一次”是什么意思)。此外,还有一些批评:
有关详细说明,请参阅我的Makefile tutorial。也就是说,您可能需要考虑更现代的构建系统,例如Bazel或Gradle。这些系统的设计使用起来更简单,更不易出错,更便携(因为它们可以更容易地进行便携式操作),而且速度更快。