Closed
Description
I am trying to build multiple sketches using a project wide CMakeLists.txt file. If I call the build_sketch() function with each of the targets then cmake reports an error about duplicated targets:
...
Make Error at /home/dpd/.arduino15/packages/STMicroelectronics/hardware/stm32/2.7.1/variants/STM32F1xx/F103C8T_F103CB(T-U)/CMakeLists.txt:5 (add_library):
add_library cannot create target "variant" because another target with the
same name already exists. The existing target is an interface library
created in source directory
"/home/dpd/.arduino15/packages/STMicroelectronics/hardware/stm32/2.7.1/variants/STM32F1xx/F103C8T_F103CB(T-U)".
See documentation for policy CMP0002 for more details.
...
I have tried various cmake property settings but the error persists. I was able to get the builds to work by putting an if (NOT TARGET variant)
guard around the add_subdirectory calls in build_sketch.cmake.
*** build_sketch.cmake.orig 2024-02-21 17:32:23.290460959 +1100
--- build_sketch.cmake 2024-02-21 17:33:09.851221766 +1100
***************
*** 6,14 ****
include(set_base_arduino_config)
function(build_sketch)
! add_subdirectory(${BUILD_VARIANT_PATH} ./variant)
! add_subdirectory(${BUILD_CORE_PATH} ./cores/arduino)
! add_subdirectory(${BUILD_LIB_PATH} ./libraries)
cmake_parse_arguments(PARSE_ARGV 0 SKBD "" "TARGET" "SOURCES;DEPENDS")
--- 6,17 ----
include(set_base_arduino_config)
function(build_sketch)
! if (NOT TARGET variant)
! add_subdirectory(${BUILD_VARIANT_PATH} ./variant)
! add_subdirectory(${BUILD_CORE_PATH} ./cores/arduino)
! add_subdirectory(${BUILD_LIB_PATH} ./libraries)
! endif()
!
cmake_parse_arguments(PARSE_ARGV 0 SKBD "" "TARGET" "SOURCES;DEPENDS")
If there is a better solution then I would love to know otherwise I can submit a pull request.