终于把自制的代码搞进去到eclipse_cpp了。

本文详细介绍了一个复杂的Makefile配置示例,包括如何定义目标、依赖项和编译规则等。通过解决缺少'all'标签的问题,展示了Makefile在项目构建中的关键作用。

linux 中的 c++代码有时候会带有make文件


需要带有make文件的话是这样的。

file->new ->c++ project 然后选择最后一个make file project中的hello world C++ Makefile Project

然后就会生成

Makefile

CXXFLAGS =	-O2 -g -Wall -fmessage-length=0

OBJS =		projectName.o

LIBS =

TARGET =	projectName

$(TARGET):	$(OBJS)
	$(CXX) -o $(TARGET) $(OBJS) $(LIBS)

all:	$(TARGET)

clean:
	rm -f $(OBJS) $(TARGET)


Makefile文件有一个all:就是build的开头,clean就是要清理时候执行的。


自制的make如下


TARGET = crowbar

CC=gcc
OBJS = \

  lex.yy.o\

  y.tab.o\

  main.o\

  interface.o\

  create.o\

  execute.o\

  eval.o\

  string.o\

  string_pool.o\

  util.o\

  native.o\

  error.o\

  error_message.o\

  ./memory/mem.o\

  ./debug/dbg.o

CFLAGS = -c -g -Wall -Wswitch-enum -ansi -pedantic -DDEBUG

INCLUDES = \



$(TARGET):$(OBJS)

	cd ./memory; $(MAKE);

	cd ./debug; $(MAKE);

	$(CC) $(OBJS) -o $@ -lm

clean:

	rm -f *.o lex.yy.c y.tab.c y.tab.h *~

y.tab.h : crowbar.y

	bison --yacc -dv crowbar.y

y.tab.c : crowbar.y

	bison --yacc -dv crowbar.y

lex.yy.c : crowbar.l crowbar.y y.tab.h

	flex crowbar.l

y.tab.o: y.tab.c crowbar.h MEM.h

	$(CC) -c -g $*.c $(INCLUDES)

lex.yy.o: lex.yy.c crowbar.h MEM.h

	$(CC) -c -g $*.c $(INCLUDES)

.c.o:

	$(CC) $(CFLAGS) $*.c $(INCLUDES)

./memory/mem.o:

	cd ./memory; $(MAKE);

./debug/dbg.o:

	cd ./debug; $(MAKE);

############################################################

create.o: create.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h

error.o: error.c MEM.h crowbar.h CRB.h CRB_dev.h

error_message.o: error_message.c crowbar.h MEM.h CRB.h CRB_dev.h

eval.o: eval.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h

execute.o: execute.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h

interface.o: interface.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h

main.o: main.c CRB.h MEM.h

native.o: native.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h

string.o: string.c MEM.h crowbar.h CRB.h CRB_dev.h

string_pool.o: string_pool.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h

util.o: util.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h


因为这里没有 all标签,所以一直报错:

23:05:22 **** Build of configuration Default for project cc ****
make all 
make: *** No rule to make target `all'.  Stop.

23:05:22 Build Finished (took 85ms)

加上all后就ok了,加上ok的代码如下:


TARGET = crowbar
CC=gcc
OBJS = \
  lex.yy.o\
  y.tab.o\
  main.o\
  interface.o\
  create.o\
  execute.o\
  eval.o\
  string.o\
  string_pool.o\
  util.o\
  native.o\
  error.o\
  error_message.o\
  ./memory/mem.o\
  ./debug/dbg.o
CFLAGS = -c -g -Wall -Wswitch-enum -ansi -pedantic -DDEBUG
INCLUDES = \

$(TARGET):$(OBJS)
	cd ./memory; $(MAKE);
	cd ./debug; $(MAKE);
	$(CC) $(OBJS) -o $@ -lm
all:	$(TARGET)
clean:
	rm -f *.o lex.yy.c y.tab.c y.tab.h *~
y.tab.h : crowbar.y
	bison --yacc -dv crowbar.y
y.tab.c : crowbar.y
	bison --yacc -dv crowbar.y
lex.yy.c : crowbar.l crowbar.y y.tab.h
	flex crowbar.l
y.tab.o: y.tab.c crowbar.h MEM.h
	$(CC) -c -g $*.c $(INCLUDES)
lex.yy.o: lex.yy.c crowbar.h MEM.h
	$(CC) -c -g $*.c $(INCLUDES)
.c.o:
	$(CC) $(CFLAGS) $*.c $(INCLUDES)
./memory/mem.o:
	cd ./memory; $(MAKE);
./debug/dbg.o:
	cd ./debug; $(MAKE);
############################################################
create.o: create.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h
error.o: error.c MEM.h crowbar.h CRB.h CRB_dev.h
error_message.o: error_message.c crowbar.h MEM.h CRB.h CRB_dev.h
eval.o: eval.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h
execute.o: execute.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h
interface.o: interface.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h
main.o: main.c CRB.h MEM.h
native.o: native.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h
string.o: string.c MEM.h crowbar.h CRB.h CRB_dev.h
string_pool.o: string_pool.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h
util.o: util.c MEM.h DBG.h crowbar.h CRB.h CRB_dev.h

只是加了一行:  all: $(TARGET)


运行:

把下面这个文件放在test文件夹下

t.crb

for (i = 1; i < 100; i = i + 1) {
     if (i % 15 == 0) {
       print("FizzBuzz\n");
     } elsif (i % 3 == 0) {
       print("Fizz\n");
     } elsif (i % 5 == 0) {
        print("Buzz\n");
     } else {
          print("" + i + "\n");
     }
 }



   debug  as   configure   在参数加上 :        test/t.crb

so 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值