此工程目录虽然对于大型的工程来说还略显单薄,但是对于一些大项目前期的测试程序还是可以胜任的,故记录下来,以备以后查阅。
用图片的形式来表示功能目录的架构,较为直观,不多废话直接上图:
图1 工程目录图
如图所示,EDMA_test_drv工程(或测试程序),由一个Makefile,和两个文件夹inc,src组成。src包含工程的.c文件,通常有main.c 等等,inc包含工程的头文件xx.h,Makefile为此工程的编译规则。还有两个文件夹在make后自动产生,如下图所示:
图2 编译后的工程目录
bin文件夹通常存放编译后的可执行二进制文件,而obj存放编译的目标文件。
# 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)