/home/yanlei/src/Firmware/cmake/common 中定义了其他CMakeLists.txt中所使用的一些函数
使用最多的函数px4_add_module在px4_base.cmake中
//ekf2的CMakeLists.txt
px4_add_module(
MODULE modules__ekf2
MAIN ekf2
COMPILE_FLAGS
STACK_MAIN 2500 //任务堆栈大小
STACK_MAX 4000
SRCS
ekf2_main.cpp //模块函数的起点
DEPENDS
git_ecl
ecl_EKF
ecl_geo
perf
)
多旋翼姿态控制的CMakeLists.txt
px4_add_module(
MODULE modules__mc_att_control
MAIN mc_att_control
STACK_MAIN 1200
STACK_MAX 3500
COMPILE_FLAGS
SRCS
mc_att_control_main.cpp
DEPENDS
circuit_breaker
conversion
mathlib
)
最终会在/home/yanlei/src/Firmware/ build /nuttx_px4fmu-v2_default/src/modules build文件夹中每个模块对应的文件夹下生产.a静态库文件用于后期程序链接
px4_base.cmake函数说明:
px4_parse_function_args:解析函数的一些参数和flag,用于其他cmake函数调用。
px4_join:没看懂,函数结合在一起?
px4_add_common_flags 设置一些编译参数、编译对象(飞控板、软件仿真......)还有C C++的一些编译参数,最重要的是包含了include_directories
其他函数看字面意思就能理解
px4_git.cmake函数说明:
px4_add_git_submodule:添加git子模块,这应该就是为什么可以在编译的过程中会自动下载nuttx、mavlink相关模块的实现吧
px4_metadata.cmake函数说明:
px4_generate_airframes_xml:生成机型对应的XML文件,调用了python脚本px_process_airframes.py去处理xml文件,在px4_generate_airframes_xml函数中给python脚本传入了一些参数,px_process_airframes.py脚本中import了一些python库,应该是用于解析init.d文件夹下的机型参数用的,最终生成的airframe.xml文件在/home/yanlei/src/Firmware/build/nuttx_px4fmu-v2_default文件夹下,airframe.xml定义了机型的id,电机输出等等