写makefile碰到点问题

今天同事有个工程要移到linux下,让我给他写了一个makefile的demo。结果我写的demo是可以编译运行了,但是加入了他的东西以后就是编译不出来。没办法,只能一点一点去找原因,结果发现在最后链接的时候,怎么只有一个.o文件。但是在makefile文件里面定义的是有多个的!再看一下编译选项,

$(TARGET):$(OBJS)
        $(CC) $(FLAG) -o $@ $<

好像也没有什么问题哦。在终端直接把编译的相关OBJ加上去,一编译就成功了,好像还是这个编译选项有问题。

想啊想啊,最后想到了$<,这个好像代表的是冒号(:)后面的第一个值,原来是这样啊,那直接用$(OBJS)来代替$<,结果一编译就成功了。

附makefile例子:

CC = g++

BINDIR = ../../../bin

OBJDIR = ../../../obj

FLAG = -Wall -g

OBJS = $(OBJDIR)/classtest.o $(OBJDIR)/inclass.o

TARGET = $(BINDIR)/classtest

all:$(TARGET)

$(TARGET):$(OBJS)
        $(CC) $(FLAG) -o $@ $(OBJS)

$(OBJDIR)/classtest.o:classtest.cpp
        $(CC) $(FLAG) -o $@ -c $<
$(OBJDIR)/inclass.o:inclass.cpp
        $(CC) $(FLAG) -o $@ -c $<

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值