Solved
CubeMX forgets to include "usbx_stm32_device_controllers" sources in cmake
STM32CubeMX version 6.18.0.
When generating “cmake/stm32cubemx/CMakeLists.txt” does not include source files from directory “Middlewares/ST/usbx/common/usbx_stm32_device_controllers”. My workaround is to add those sources in project CMakeLists.txt:
# Set usbx_stm32_device_controllers code files
set(USBD_STM32_DEVICE_CONTROLLERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Middlewares/ST/usbx/common/usbx_stm32_device_controllers)
set(USBD_STM32_DEVICE_CONTROLLERS_SRCS
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_callback.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_create.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_destroy.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_reset.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_stall.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_status.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_frame_number_get.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_function.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_initialize_complete.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_initialize.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_interrupt_handler.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_transfer_abort.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_transfer_request.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_transfer_run.c
${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_uninitialize.c
)
# Add sources to executable
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
${USBD_STM32_DEVICE_CONTROLLERS_SRCS}
# Add user sources here
)


