PX4 Build System
PX4运行框架和PX4板子的软件、硬件的配置
PX4 搭建系统的makefile支持基于Nuttx配置的Nuttx档案,并且管理全部PX4框架的配置
firmware.mk:
对一个特定框架配置的管理(See the comments at the top of this file for detailed documentation.)
搭建模块,在命令列表和文件系统
该makefile可以被外部搭建的系统直接使用,通过配置,它可以在PX4资源树的内部和外部进行编译。当使用这种模式的时候,至少BOARD, MODULES 和CONFIG_FILE要被设置。
firmware_nuttx.mk:
被firmware.mk调用,用于搭建基于NuttX的框架
firmware_posix.mk:
被firmware.mk调用,用于搭建基于POSIX(non-ROS)的框架
module.mk
被firmware.mk调用,用于搭建各个独立的模块(See the comments at the top of this file for detailed documentation.)
除了被firmware.mk调用,正常情况下不使用它
nuttx.mk
被顶层的makefile文件调用去搭建或者下降NuttX文档(如果PX4_TARGET_OS被设置为"nuttx")。
posix.mk
被顶层的makefile文件调用去设置POSIX参数(如果PX4_TARGET_OS被设置为"posix")
upload.mk
被顶层的makefile文件调用去确定board类型。我们也可以通过外部搭建的系统去使用它。(只能用NuttX目标)
setup.mk
提供公共路径和工具定义。实现与主机系统的兼容的技巧。设置PX4_TARGET_OS.
board_<boardname>.mk
boardname的板子的配置。通常设置CONFIG_ARCH然后再包括对于该板子的工具链的定义。
config_<boardname>_<configname>.mk
所需的板子类型的特殊配置所需的参数。板子的名字来源于文件名。让MODULES模块去选择将被用于配置的源模块,也可以让ROMFS_ROOT去搭建一个ROMFS(文件系统),BUILTIN_COMMAND(内置命令)去包括非模块的命令。(e.g. 来自于NuttX的命令)。
toolchain_<toolchainname>.mk
将宏定义用于编译和链接源文件。采用EXTERADEFINES将额外的预处理符号的定义,EXTRACFLAGS,EXTRACXXFLAGS,EXTRAAFLAGS 和EXTRALDFLAGS 分别传入到C编译器,C++编译器,会变编译器和链接器中。
定义COMPILE, COMPILEXX, ASSEMBLE, PRELINK, ARCHIVE and LINK 的宏定义用于其他的系统搭建中。