问一个关于Makefile 的问题

970361 2003-08-21 03:10:00
我写了一个makefile文件,但是我想把把 *.c放在src目录, 把*.o放在 obj/目录里面 请问该如何写啊?

#makefile 如下,请各位知道的大虾指点一下
PROJS =myprog

OBJS := $(patsubst %.c, %.o,$(wildcard *.c))

CFLAGS += -c -O -O2 -g -D__LINUX__ -I/usr/include/mysql -I./include
CFLAGS += -DGS_DEBUG
LFLAGS = -lmysqlclient

all: $(PROJS)

$(PROJS): $(OBJS)
$(CC) -o $(PROJS) $(LIBS) $(OBJS) $(LDFLAGS) $(LFLAGS)

.c.o:
$(CC) $(INCLUDE) $(CFLAGS) -o $*.o $<

clean:
rm -f *.o *.BAK core $(PROJS) $(PROJS).res

depend:
$(CC) -E -M $(INCLUDE) *.c >.depend

ifeq (.depend, $(wildcat .depend))
include .depend
endif
...全文
49 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuty2006 2003-08-27
  • 打赏
  • 举报
回复
mk
970361 2003-08-25
  • 打赏
  • 举报
回复
为了表示对各位的感谢,
我把修改好的Makefile 贴出来

# This is new version of make
# you need only copy you *.c file to ./src/
# and copy *.h to ./include/
# makefile is so smart that he can find all *.c file to compile
#
# But notice!!! PLEASE REMOVE c file FROM ./src that you NEEDN'T compile
# neil duan
# 2003-8-25

CC = gcc
#TOPDIR := $(shell cd .; pwd)

TOPDIR :=.

OBJDir = $(TOPDIR)/obj
SRCDir = $(TOPDIR)/src

##############set flag

ifeq ($(DEBUG),y)
CFLAGS += -c -O -O2 -Wall -g -D__LINUX__ -I/usr/include/mysql -I$(TOPDIR)/include
CFLAGS += -DGS_DEBUG
else
CFLAGS += -c -O -O2 -D__LINUX__ -I/usr/include/mysql -I$(TOPDIR)/include
endif
LFLAGS = -lmysqlclient

VPATH := $(SRCDir) $(TOPDIR)/include $(OBJDir)

PROJS = $(TOPDIR)/GameService


vpath %.c $(SRCDir)

###########get all source file

SRC := $(shell cd ./src; ls | grep .c)
OBJS := $(patsubst %.c, %.o,$(SRC) )

PathOBJS :=$(patsubst %.c, $(OBJDir)/%.o, $(SRC) )


##########make
##############################################################

all: $(PROJS)

$(PROJS): $(OBJS)
$(CC) -o $(PROJS) $(PathOBJS) $(LDFLAGS) $(LFLAGS)

.c.o:
$(CC) $(INCLUDE) $(CFLAGS) -o $(OBJDir)/$*.o $<

clean:
rm -f $(PathOBJS) core $(PROJS) $(PROJS).res

depend:
$(CC) -E -M $(INCLUDE) *.c >.depend

ifeq (.depend, $(wildcat .depend))
include .depend
endif


#############################################################
970361 2003-08-25
  • 打赏
  • 举报
回复
哦,好的,我试试看
creekcpj 2003-08-23
  • 打赏
  • 举报
回复
在你头文件最后加个回车。
liuty2006 2003-08-22
  • 打赏
  • 举报
回复
up
970361 2003-08-22
  • 打赏
  • 举报
回复
还有一个问题,就是如何把

database.h:104:7: warning: no newline at end of file
这个警告去掉,包含的每个头文件都回在最后出现这个警告,看起来特别烦人
970361 2003-08-22
  • 打赏
  • 举报
回复
to: yadang(亚当条)
修改了以后,每次MAKE都回把所有文件重新编译,那样很费时间的
:(
yadang 2003-08-21
  • 打赏
  • 举报
回复
$(CC) $(INCLUDE) $(CFLAGS) -o ./obj/$*.o $<
970361 2003-08-21
  • 打赏
  • 举报
回复
哦,能给个例子吗?
incats 2003-08-21
  • 打赏
  • 举报
回复
在cc和out的时候, 加上路径不可以么?
970361 2003-08-21
  • 打赏
  • 举报
回复
难道就没有人知道吗?分数不够还可以再加啊

23,114

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧