一个较为通用的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)
相关文章推荐
- Linux下通用的目录架构Makefile
- linux eclipse c++ 导入一个含有makefile的工程
- 构建一个较为通用的业务技术架构
- 一个通用的LINUX驱动Makefile
- linux下C工程层级目录的Makefile编写
- 如何构建一个较为通用的业务技术架构
- linux Makefile : 编译包含非当前目录的工程
- 如何构建一个较为通用的业务技术架构
- 创业之初的技术题:如何构建一个较为通用的业务技术架构
- 一个简单c++工程在linux下的makefile写法
- linux目录架构
- 在linux下,如何使用find命令查看一个目录下包含多少文件
- linux下批量替换一个目录下的文件某个字符串
- linux学习笔记 linux目录架构
- Linux学习笔记之目录架构
- 一个比较通用的makefile,写一些小程序基本够用了
- 写得蛮好的linux学习笔记一-目录架构(收藏)
- 修改一个工作空间中的工程文件目录结构
- Linux网络编程一步一步学-自己编写一个HTTP协议的目录浏览和文件下载服务器
- Linux目录架构