《编译原理与实践》的小编译器tiny的源码好像是为windows量身定做的,我作了以下改动以在linux下运行 解压loucomp.zip后文件名都是大写的,编写以下脚本将大写文件名改为小写 for i in * do mv $i `ls $i | tr [A-Z] [a-z]` done 然后改动makefile文件如下: # # makefile for TINY # Borland C Version # K. Louden 2/3/98 # CC = gcc CFLAGS = OBJS = main.o util.o scan.o parse.o symtab.o analyze.o code.o cgen.o all:...
多个模块的工程,如何用makefile管理,方便上线 比如目录结构如下 _____ | src | ----- | _______ |---|common| | ------- | _____ |---|app1| | ----- | _____ |---|app2| | ----- | _____ |---|app3| ----- 其中common目录下是一些公共的.h 和 .cpp文件, app1,app2,app3目录是互不相干的三个应用模块,都include到common中的文件. 为了上线方便,需要能用一个指令就把ap...
TARGETS=a b c ... OBJS=$(patsubt %, %.o, $(TARGETS)) LDFLAGS=-static LIBS=-lx LIBDIRS=/usr/local/... CXX=g++ 如果这么写的话 $(TARGETS) : $(OBJS) $(CXX) -o $@ $< -g $(LIBS) $(LDFLAGS) $(addprefix -L, $(LIBDIRS)) 最后执行的是 g++ -o a a.o -lx -static -L/usr/local/... g++ -o b a.o -lx -static -L/usr/local/... g++ -o c a.o ... ... 可是我想要的是 g++ -o a a.o ... g++ -o b b.o ... g++ -o c c.o ...
譬如 我在main。cpp中调用a.cpp 在a.cpp中需要调用a1.cpp 在a1.cpp中又调用了a11.cpp,a12.cpp 怎么写makefile
这是一个用java编写的project,在顶层目录下有一个makefile,还有6个子文件夹,分别也有各自的makefile。 顶层makefile如下: SUBDIRS = `find . -type d ! -name "." ! -name "CVS" -print -prune` all: for i in $(SUBDIRS) ; do cd $$i ; make $@ ; cd .. ; done tags: for i in $(SUBDIRS) ; do cd $$i ; make $@ ; cd .. ; done find . -name CVS -prune -o -name "*.java" -print | etags - clean: for i in $(S...
这是一个用java编写的project,在顶层目录下有一个makefile,还有6个子文件夹,分别也有各自的makefile。 顶层makefile如下: SUBDIRS = `find . -type d ! -name "." ! -name "CVS" -print -prune` all: for i in $(SUBDIRS) ; do cd $$i ; make $@ ; cd .. ; done tags: for i in $(SUBDIRS) ; do cd $$i ; make $@ ; cd .. ; done find . -name CVS -prune -o -name "*.java" -print | etags - clean: for i in $(S...