PUPANVR-创建工程及管理脚本(2)

介绍

PUPANVR是一款开源的嵌入式NVR系统,旨在创建一款多平台,易用,稳定的NVR系统。

NVR工程说明

工程的配置,编译是参考Live555开源的方式写的,主要体现在根目录下的config文件夹. 不过一些脚本是从其他芯片厂家的BSP里有拿进来用,如海思安防芯片里的一些脚本。 注意环境是用的bash调试使用的,其他的环境没有测试和使用过。

工程目的

同一个工程里实现不同的硬件,芯片,产品功能,尽量一套代码维护起来。

目录说明

├── app 主应用源代码目录

├── config 不同型号产品配置目录

├── doc 文档目录

├── hardware 不同硬件对应的一些文档

├── product 不同产品对应的一些文档

└── tool打包时一些工具会打包进去,放在这里

编译方式

1. 针对不同的产品,如硬件不同或业务不同,在config目录里编写一个配置文件;
2. 在工程目录下执行 ./config/genMakefiles P30 (P30是对应的一个产品配置文件名,config目录下),这一步会生成buildout目录,并在目录中生成Makefile;
3. 在工程目录下直接执行make app编译应用;

 在buildout目录里的Makefile是如何生成的,请查看config里的genMakefiles相关的脚本。

在以往的产品开发实践中,会面临不同的硬件,不同的产品定义,功能等变化。在工程目录里建立了一个hardware的目录,通过这个目录来隔离不同产品硬件相关的差异。

在product目录里,一般可以通过这个目录来隔离不同产品的差异,

还有tool目录的下级目录是以芯片来区分放置文件的,也是方便来区分不同产品,不同芯片硬件,这里可能会导致存在一定的重复文件。

app目录存放应用工程代码,使用CMake来管理代码脚本的。

产品配置示例

如config目录里的P30文件,内容:

#定义交叉编译工具链
export PROJECT_CROSS_COMPILE=arm-hisiv600-linux

#定义芯片型号
export DEV_CHIP=hi3536c
export DEV_OS=LINUX
export DEV_SDK=hi3536c

#定义产品型号
export PRODUCT_SCRIPT=normal
#产品型号
export PRODUCT_MODEL=P30
export PRODUCT_BOARD=P30

export PRODUCT_MODEL_NUMBER=PUPANVR

export PROJECT_CFLAGS=""
export PROJECT_CPPFLAGS=""

里面分别定义了工具链,芯片型号,产品型号,硬件板端型号,这些宏通过脚本又都会导入到一个头文件中,让应用中也可以使用这些宏来区分不同的产品!

猜你喜欢

转载自blog.csdn.net/jhting/article/details/121621653