PX4的CMake解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_38245860/article/details/83068241

/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,电机输出等等

猜你喜欢

转载自blog.csdn.net/sinat_38245860/article/details/83068241