set(parts assembly production #pcb_case/tolerance_tests ) foreach(part ${parts}) set(source "${CMAKE_CURRENT_SOURCE_DIR}/${part}.scad") set(intermediate "${CMAKE_CURRENT_BINARY_DIR}/${part}.stl") set(sink "${CMAKE_CURRENT_BINARY_DIR}/${part}.gcode") add_custom_command( OUTPUT ${intermediate} COMMAND openscad --hardwarnings --export-format binstl -o ${intermediate} ${source} DEPENDS ${source} ) set(printer_config "${CMAKE_CURRENT_SOURCE_DIR}/prusa-slicer/anycubic_i3_mega_s.ini") add_custom_target( "mech-stl-${part}" ALL DEPENDS ${intermediate} ) add_custom_command( OUTPUT ${sink} COMMAND prusa-slicer --load ${printer_config} --output ${sink} --export-gcode ${intermediate} DEPENDS ${intermediate} ) add_custom_target( "mech-gcode-${part}" ALL DEPENDS ${sink} ) endforeach()