一个较为通用的linux工程目录架构和Makefile



1、前言

    此工程目录虽然对于大型的工程来说还略显单薄,但是对于一些大项目前期的测试程序还是可以胜任的,故记录下来,以备以后查阅。

2、目录结构图

    用图片的形式来表示功能目录的架构,较为直观,不多废话直接上图:


图1 工程目录图

    如图所示,EDMA_test_drv工程(或测试程序),由一个Makefile,和两个文件夹inc,src组成。src包含工程的.c文件,通常有main.c 等等,inc包含工程的头文件xx.h,Makefile为此工程的编译规则。还有两个文件夹在make后自动产生,如下图所示:


图2 编译后的工程目录

    bin文件夹通常存放编译后的可执行二进制文件,而obj存放编译的目标文件。

3、适合此架构的Makefile

# Compiler name (with path, if not in path)

CC=/home/shuisheng/DVRRDK_04.00.00.03/ti_tools/cgt_a8/arago/linux-devkit/bin/arm-arago-linux-gnueabi-gcc

RELEASE=/home/shuisheng/7425_projects

TEST_DIR=/opt/DVRRDK_04.00.00.03/target/rfs/opt/shuisheng/projxxx/app_test

 

LIBS=$(RELEASE)/release/libC6678_cmd_proc.a  $(RELEASE)/release/libmmap.a $(RELEASE)/release/libapi.a

 

# Mainly used for include paths

INCLUDES=-I inc \

        -I ${RELEASE}/include

 

LDFLAGS=-lpthread

 

SRC=src

SOURCES= $(wildcard $(SRC)/*.c)

DIR_OBJS=obj

DIR_BIN=bin

 

OBJECTS=$(patsubst$(SRC)/%.c,$(DIR_OBJS)/%.o, $(SOURCES))

EXECUTABLE=edma_test_drv

EXECUTABLE:=$(addprefix $(DIR_BIN)/,$(EXECUTABLE))

 

all: $(SOURCES) $(OBJECTS) $(EXECUTABLE)

 

 

$(EXECUTABLE): $(OBJECTS) $(LIBS)

       @mkdir -p $(dir $@)

       $(CC)  $(OBJECTS) $(LIBS) -o $@$(LDFLAGS)

 

$(DIR_OBJS)/%.o : $(SRC)/%.c

       @mkdir -p $(dir $@)

       $(CC) $(INCLUDES) $(DEFINES) -c $< -o $@

 

clean:

       @rm -fr *.o $(EXECUTABLE)

       @rm -fr $(OBJECTS)

       @rm -rf $(DIR_BIN) $(DIR_OBJS)

 

install:

       @echo "cp bin"

       @cp -rf $(EXECUTABLE) $(TEST_DIR)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值