下面是添加飞控板模块函数
function(px4_add_board)
#这里是一个模板,在各个飞控板编译的defluat文件里面可以看到类似的模块
px4_parse_function_args(
NAME px4_add_board
ONE_VALUE
PLATFORM
TOOLCHAIN
ARCHITECTURE
ROMFSROOT
IO
UAVCAN_INTERFACES
UAVCAN_TIMER_OVERRIDE
LINKER_PREFIX
CRYPTO
KEYSTORE
MULTI_VALUE
DRIVERS
MODULES
SYSTEMCMDS
EXAMPLES
SERIAL_PORTS
UAVCAN_PERIPHERALS
OPTIONS
BUILD_BOOTLOADER
CONSTRAINED_FLASH
NO_HELP
CONSTRAINED_MEMORY
EXTERNAL_METADATA
TESTING
ETHERNET
REQUIRED
PLATFORM
ARGN ${ARGN})
# 将PX4_BOARD_DIR设置成CMAKE_CURRENT_LIST_DIR
set(PX4_BOARD_DIR ${CMAKE_CURRENT_LIST_DIR} CACHE STRING "PX4 board directory" FORCE)
include_directories(${PX4_BOARD_DIR}/src)
# get the VENDOR & MODEL from the caller's directory names
#获取CMAKE_CURRENT_LIST_FILE目录赋值给base_dir,获取base_dir完整名称分别赋值给MODEL和VENDOR
get_filename_component(base_dir "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
get_filename_component(MODEL "${base_dir}" NAME)
get_filename_component(base_dir "${base_dir}" DIRECTORY)
get_filename_component(VENDOR "${base_dir}" NAME)
#设置编译的飞控版型号
set(PX4_BOARD ${VENDOR}_${MODEL} CACHE STRING "PX4 board" FORCE)
# board name is uppercase with no underscores when used as a define
#设置字符串大写
string(TOUPPER ${PX4_BOARD} PX4_BOARD_NAME)
#用“-”代替飞控版名字中下划线
string(REPLACE "-" "_" PX4_BOARD_NAME ${PX4_BOARD_NAME})
#更新PX4_BOARD_NAME名字
set(PX4_BOARD_NAME ${PX4_BOARD_NAME} CACHE STRING "PX4 board define" FORCE)
set(PX4_BOARD_VENDOR ${VENDOR} CACHE STRING "PX4 board vendor" FORCE)
set(PX4_BOARD_MODEL ${MODEL} CACHE STRING "PX4 board model"