generated from hulk/gd32f4xx_template_cmake_vscode
92 lines
4.7 KiB
CMake
92 lines
4.7 KiB
CMake
project(GD32F4xx_usb_library LANGUAGES C CXX ASM)
|
||
|
||
# GD32F4xx USB 全栈库(device/host + 各 class),默认不参与构建:
|
||
# 1. 根 CMakeLists.txt 中 add_subdirectory(SDK/GD32F4xx_usb_library) 始终执行;
|
||
# 2. 需要使用 USB 时启用开关(写入 CMakePresets 缓存或命令行):
|
||
# cmake --preset Debug -DGD32_ENABLE_USB=ON
|
||
# 3. 然后在业务目标上链接:target_link_libraries(${PROJECT_NAME} PRIVATE GD32F4xx_usb_library)
|
||
option(GD32_ENABLE_USB "Build GD32F4xx USB device/host library" OFF)
|
||
|
||
if(NOT GD32_ENABLE_USB)
|
||
return()
|
||
endif()
|
||
|
||
set(USB_SRC
|
||
# USB driver (device & host common)
|
||
driver/Source/drv_usb_core.c
|
||
driver/Source/drv_usb_dev.c
|
||
# host 专用驱动,默认 device 模式不编译(启用 host 时放开):
|
||
# driver/Source/drv_usb_host.c
|
||
# driver/Source/drv_usbh_int.c
|
||
driver/Source/drv_usbd_int.c
|
||
|
||
# USB device core
|
||
device/core/Source/usbd_core.c
|
||
device/core/Source/usbd_enum.c
|
||
device/core/Source/usbd_transc.c
|
||
|
||
# USB device classes —— 注意:class 源文件依赖例程级配置宏(各例程 usbd_conf.h
|
||
# 或专用头提供端点/包尺寸定义),模板默认只启用 CDC 虚拟串口(conf/ 的
|
||
# usbd_conf.h 取自 cdc_acm 例程,含 CDC 全部所需宏)。
|
||
# 启用其它 class 时:参考官方库 Examples/USB/USB_Device/<对应例程>/inc 下的
|
||
# usbd_conf.h,把该 class 所需宏并入 conf/usbd_conf.h,再放开对应源文件。
|
||
device/class/cdc/Source/cdc_acm_core.c
|
||
# device/class/audio/Source/audio_core.c # 需 audio 例程 conf(SPEAKER_OUT_PACKET 等)+ 板级 codec
|
||
# device/class/audio/Source/audio_out_itf.c # 板级 codec 驱动(codec_gpio_init 等)
|
||
# device/class/dfu/Source/dfu_core.c # 需 dfu 例程 conf(TRANSFER_SIZE/dfu_*_cb 等)
|
||
# device/class/dfu/Source/dfu_mem.c # DFU 存储媒介适配层(例程级实现)
|
||
# device/class/hid/Source/custom_hid_core.c # 需 custom_hid 例程 conf(CUSTOMHID_IN_EP 等)
|
||
# device/class/hid/Source/standard_hid_core.c # 需 standard_hid 例程 conf(HID_IN_PACKET 等)
|
||
# device/class/iap/Source/usb_iap_core.c # 需 iap 例程 conf + flash_operation.h
|
||
# device/class/msc/Source/usbd_msc_bbb.c # 需 msc_udisk 例程 conf(MSC_IN_EP/MEM_LUN_NUM 等)
|
||
# device/class/msc/Source/usbd_msc_core.c
|
||
# device/class/msc/Source/usbd_msc_scsi.c
|
||
# device/class/printer/Source/printer_core.c # 需 printer 例程 conf(PRINTER_IN_EP 等)
|
||
|
||
# USB host core / classes —— 默认不编译:
|
||
# conf/ 下的 usb_conf.h 目前为 device 模式(USE_DEVICE_MODE,CDC 例程基准),
|
||
# 启用 host 时需将 conf 切换为 host/dual 模式(参考官方库 Examples/USB/USB_Host
|
||
# 的 usb_conf.h + usbh_conf.h 组合,host 还依赖 USB_RX_FIFO_FS_SIZE 等 FIFO 宏),
|
||
# 再放开以下源文件并链接:
|
||
# host/core/Source/usbh_core.c
|
||
# host/core/Source/usbh_enum.c
|
||
# host/core/Source/usbh_pipe.c
|
||
# host/core/Source/usbh_transc.c
|
||
# host/class/hid/Source/usbh_hid_core.c
|
||
# host/class/hid/Source/usbh_standard_hid.c
|
||
# host/class/msc/Source/usbh_msc_bbb.c
|
||
# host/class/msc/Source/usbh_msc_core.c
|
||
# host/class/msc/Source/usbh_msc_scsi.c
|
||
# host/class/msc/Source/usbh_msc_fatfs.c # 另依赖 fat_fs(Demo Suites Utilities/Third_Party)
|
||
)
|
||
|
||
add_library(GD32F4xx_usb_library OBJECT ${USB_SRC})
|
||
|
||
target_include_directories(GD32F4xx_usb_library PUBLIC
|
||
${CMAKE_CURRENT_SOURCE_DIR}/conf
|
||
${CMAKE_CURRENT_SOURCE_DIR}/driver/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/device/core/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/device/class/audio/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/device/class/cdc/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/device/class/dfu/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/device/class/hid/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/device/class/iap/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/device/class/msc/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/device/class/printer/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/host/core/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/host/class/hid/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/host/class/msc/Include
|
||
${CMAKE_CURRENT_SOURCE_DIR}/ustd
|
||
${CMAKE_CURRENT_SOURCE_DIR}/ustd/common
|
||
${CMAKE_CURRENT_SOURCE_DIR}/ustd/class/cdc
|
||
${CMAKE_CURRENT_SOURCE_DIR}/ustd/class/hid
|
||
${CMAKE_CURRENT_SOURCE_DIR}/ustd/class/msc
|
||
)
|
||
|
||
target_compile_definitions(GD32F4xx_usb_library PUBLIC GD32F405)
|
||
# GD32F405 仅集成 USBFS(全速)核心;USE_USB_FS 原例程由 Keil 工程宏传入
|
||
target_compile_definitions(GD32F4xx_usb_library PUBLIC USE_USB_FS)
|
||
|
||
# USB 库依赖标准外设库(RCU/GPIO 等)
|
||
target_link_libraries(GD32F4xx_usb_library PUBLIC CMSIS GD32F4xx_standard_peripheral)
|