cmake_minimum_required(VERSION 3.13) # Explicitely define board set(PICO_BOARD pico) # Include pico-sdk cmake support include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake) project(Pico_USB_Tests C CXX ASM) set(CMAKE_C_STANDARD 17) set(CMAKE_CXX_STANDARD 17) pico_sdk_init() # Executables add_executable(Pico_Host) add_executable(Pico_Device) # Sources target_sources(Pico_Host PUBLIC src_host/main.c src_host/cdc_app.c ) target_sources(Pico_Device PUBLIC src_device/main.c src_device/usb_descriptor.c ) # Flags # Enable the reset interface target_compile_definitions(Pico_Device PUBLIC PICO_ENABLE_USB_RESET_VIA_VENDOR_INTERFACE=1 # use SDK MS_OS_20 descriptor, as this doesn't have a custom one PICO_USB_RESET_SUPPORT_MS_OS_20_DESCRIPTOR=1 # pass the interface number to the SDK MS_OS_20 descriptor PICO_USB_RESET_MS_OS_20_DESCRIPTOR_ITF=4 ) # Include paths target_include_directories(Pico_Host PUBLIC ${CMAKE_CURRENT_LIST_DIR}/src_host/ ) target_include_directories(Pico_Device PUBLIC ${CMAKE_CURRENT_LIST_DIR}/src_device/ ) # Libs target_link_libraries(Pico_Host pico_stdlib tinyusb_board tinyusb_host ) target_link_libraries(Pico_Device pico_stdlib tinyusb_board tinyusb_device ) pico_enable_stdio_usb(Pico_Device 1) # Outputs pico_add_extra_outputs(Pico_Host) pico_add_extra_outputs(Pico_Device) # Flash targets add_custom_target(Flash_Host DEPENDS Pico_Host COMMAND picotool load -f ${PROJECT_BINARY_DIR}/Pico_Host.uf2 ) add_custom_target(Flash_Device DEPENDS Pico_Device COMMAND picotool load -f ${PROJECT_BINARY_DIR}/Pico_Device.uf2 )