首页 > 其他 > 详细

多目录,多可执行文件的Makfile的编写

时间:2014-03-26 01:22:03      阅读:486      评论:0      收藏:0      [点我收藏+]

1.前言

在目前的工作中,我遇到这样的一个工作情景,可以认为我要开发一个库,这个库的有多个模块,每个模块的.c放到src中,.h放到include中,这应该是个标准做法。

drwxr-xr-x. 2 root root 4096 Mar 25 14:12 include
drwxr-xr-x. 2 root root 4096 Mar 25 16:08 obj
drwxr-xr-x. 8 root root 4096 Mar 25 12:12 programs
drwxr-xr-x. 2 root root 4096 Mar 25 14:12 src

然后希望产生的目标文件放到obj目录下。

因为我要对各个模块做多个测试,所以我有多个可执行文件,我把它们统一放到programs下面。

[root@localhost new_ttop]# ls programs/
config_test  find_p  list_test  readfile  second_test  ttop

如上图,config_test是对src中的几个模块进行测试,而list_test又是对src的另外几个模块进行测试。

我应该写一个什么样的Makefile来面对这种情况呢?

我是这样解决的,首先在顶层目录,创建一个Make.include文件,文件内容如下:

bubuko.com,布布扣
DIR_INC = ../../include
DIR_SRC = ../../src
DIR_OBJ = ../../obj
                     
SRC = $(wildcard ${DIR_SRC}/*.c)  
OBJ = $(patsubst %.c,${DIR_OBJ}/%.o,$(notdir ${SRC})) 
                     
                     
CC = gcc             
CFLAGS = -g -Wall -std=gnu99 -lpthread -I${DIR_INC}
LFLAGS = -lpthread   
bubuko.com,布布扣

然后在programs的子目录下,具体的程序中,再创建Makefile,下面是ttop的具体Makefile,对其他可执行文件来说,只需要改动BIN_TARGET

bubuko.com,布布扣
include ../../Make.include                    
                                              
BIN_TARGET = ttop                             
OBJ += $(BIN_TARGET).o                        
                                              
${BIN_TARGET}:$(OBJ)                          
    $(CC) $(LFLAGS) $^  -o $@                 
                                              
%.o:%.c                                       
    $(CC) $(CFLAGS) -c  $< -o $@              
                                              
${DIR_OBJ}/%.o:${DIR_SRC}/%.c                 
    $(CC) $(CFLAGS) -c  $< -o $@              
.PHONY:clean                                  
clean:                                        
    find ${DIR_OBJ} -name *.o |xargs rm -rf;                                                                                                                                           
    rm -f $(BIN_TARGET).o 

bubuko.com,布布扣

最终,我的文件的布局如下图所示。

bubuko.com,布布扣

 

参考:

http://www.groad.net/bbs/read.php?tid-2920-page-e.html

http://blog.csdn.net/liangkaiming/article/details/6267357

http://blog.csdn.net/zqt520/article/details/7727051

http://www.cnblogs.com/Anker/p/3242207.html

多目录,多可执行文件的Makfile的编写,布布扣,bubuko.com

多目录,多可执行文件的Makfile的编写

原文:http://www.cnblogs.com/likeyiyy/p/3623431.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!