目录结构实例
以Ubuntu系统下,创建arm架构的demo工程为例。
目录结构说明
- config 用于存放配置文件
- lib 目录用于编译动态库和静态库
- src 目录用于编译可执行文件
- test 目录用于编译测试程序
以上目录名称均可以自定义,没有特殊规定。
工程目录的创建
手动创建各级目录及文件
可以通过mkdir和touch等命令创建所需要的工程目录和文件。
自动创建各级目录
使用 addvariant 命令可以自动创建出各级目录及所需的编译配置文件。
addvariant是一个shell脚本,它为源代码树创建一个目录结构,并确保这个结构的每一层都包含make实用程序所使用的必要文件。
addvariant 详细使用方法可以参考Qnx官方提供的 用户手册
参数 i 用来指定工程目录的层级,可以使用 addvariant -i OS/CPU/VARIANT xxx xxx xxx
指定工程目录的层级。
LIST=OS (if three levels are specified)
LIST=CPU (if two levels are specified)
LIST=VARIANT (if one level is specified)
以Demo工程为例,Demo工程最深目录为三级:
cd ./Demo
addvariant -i OS src aarch64 o-le
Creating /home/build/workspace/qnx/Demo/src directory...
Creating /home/build/workspace/qnx/Demo/src/aarch64 directory...
Creating /home/build/workspace/qnx/Demo/src/aarch64/o-le directory...
生成结果如下:
Makefile 与 Makefile.dnm
Makefile 文件可以使用 addvariant 命令自动生成,也可以修改文件,指定编译逻辑。
自动生成内容如下:
# Demo/Makefile
LIST=OS
ifndef QRECURSE
QRECURSE=recurse.mk
ifdef QCONFIG
QRDIR=$(dir $(QCONFIG))
endif
endif
include $(QRDIR)$(QRECURSE)
# Demo/src/Makefile
LIST=CPU
ifndef QRECURSE
QRECURSE=recurse.mk
ifdef QCONFIG
QRDIR=$(dir $(QCONFIG))
endif
endif
include $(QRDIR)$(QRECURSE)
# Demo/src/aarch64/Makefile
LIST=VARIANT
ifndef QRECURSE
QRECURSE=recurse.mk
ifdef QCONFIG
QRDIR=$(dir $(QCONFIG))
endif
endif
include $(QRDIR)$(QRECURSE)
# Demo/src/aarch64/o-le/Makefile
include ..