本文共 1245 字,大约阅读时间需要 4 分钟。
/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,电机输出等等转载地址:http://dswsi.baihongyu.com/