Strange executable name when setting SUFFIX and VERSION

On Windows, the following snippet creates a main-1.2.3.elf (with both GCC and MSVC). However on Linux, it creates main.elf-1.2.3. I tried to also set OUTPUT_NAME main-1.2.3 to override the version string it added, but that creates main-1.2.3.elf-1.2.3. Is there a way I can both set the VERSION property and control the OUTPUT_NAME of an executable on Linux?

cmake_minimum_required(VERSION 3.28)
project(Project)
add_executable(main main.c)
set_target_properties(
  main
  PROPERTIES
    VERSION 1.2.3
    SUFFIX  .elf
)