diff options
author | xengineering <me@xengineering.eu> | 2024-12-27 13:38:16 +0100 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2025-01-01 15:31:47 +0100 |
commit | 3f76d754866d26333c43d8403c0e694f9df972a4 (patch) | |
tree | ed67d7e0a176af9867bcb25bcd3ccf0908d9df01 /mech | |
parent | 63088edf667f49fa3f0eaf2f88074e671c5e0a6b (diff) | |
download | soundbox-cmake.tar soundbox-cmake.tar.zst soundbox-cmake.zip |
mech: Add CMake-based build systemcmake
Diffstat (limited to 'mech')
-rw-r--r-- | mech/CMakeLists.txt | 19 | ||||
-rw-r--r-- | mech/mech.cmake | 62 | ||||
-rw-r--r-- | mech/pcb_case/CMakeLists.txt | 9 |
3 files changed, 90 insertions, 0 deletions
diff --git a/mech/CMakeLists.txt b/mech/CMakeLists.txt new file mode 100644 index 0000000..9b045ba --- /dev/null +++ b/mech/CMakeLists.txt @@ -0,0 +1,19 @@ +include(mech.cmake) + +set( + printer_config + "${CMAKE_CURRENT_SOURCE_DIR}/prusa-slicer/anycubic_i3_mega_s.ini" +) + +set( + prints + "${CMAKE_CURRENT_SOURCE_DIR}/assembly.scad" + "${CMAKE_CURRENT_SOURCE_DIR}/production.scad" +) + +foreach(print ${prints}) + openscad(${print}) + prusa_slicer(${print} ${printer_config}) +endforeach() + +add_subdirectory(pcb_case) diff --git a/mech/mech.cmake b/mech/mech.cmake new file mode 100644 index 0000000..2d2b979 --- /dev/null +++ b/mech/mech.cmake @@ -0,0 +1,62 @@ +function(openscad source_file) + if (NOT source_file) + message(FATAL_ERROR "Missing source_file argument in openscad function.") + endif() + + get_filename_component(name "${source_file}" NAME_WE) + + set(sink_file "${CMAKE_CURRENT_BINARY_DIR}/${name}.stl") + + add_custom_command( + OUTPUT + ${sink_file} + COMMAND + openscad + --hardwarnings + --export-format binstl + -o ${sink_file} + ${source_file} + DEPENDS + ${source_file} + ) + + add_custom_target( + "stl-${name}" + ALL + DEPENDS + ${sink_file} + ) +endfunction() + +function(prusa_slicer source_file printer_config) + if (NOT source_file) + message(FATAL_ERROR "Missing source_file argument in prusa-slicer function.") + endif() + + if (NOT printer_config) + message(FATAL_ERROR "Missing printer_config argument in prusa-slicer function.") + endif() + + get_filename_component(name "${source_file}" NAME_WE) + + set(stl_file "${CMAKE_CURRENT_BINARY_DIR}/${name}.stl") + set(sink_file "${CMAKE_CURRENT_BINARY_DIR}/${name}.gcode") + + add_custom_command( + OUTPUT + ${sink_file} + COMMAND + prusa-slicer + --load ${printer_config} + --output ${sink_file} + --export-gcode ${stl_file} + DEPENDS + ${stl_file} + ) + add_custom_target( + "gcode-${name}" + ALL + DEPENDS + ${sink_file} + ) +endfunction() diff --git a/mech/pcb_case/CMakeLists.txt b/mech/pcb_case/CMakeLists.txt new file mode 100644 index 0000000..40c9edf --- /dev/null +++ b/mech/pcb_case/CMakeLists.txt @@ -0,0 +1,9 @@ +set( + prints + "${CMAKE_CURRENT_SOURCE_DIR}/tolerance_tests.scad" +) + +foreach(print ${prints}) + openscad(${print}) + prusa_slicer(${print} ${printer_config}) +endforeach() |