您的位置:首页 > 运维架构 > 网站架构

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

2014-05-18 09:48 597 查看


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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  架构 makefile