project(libslic3r) cmake_minimum_required(VERSION 2.6) include(PrecompiledHeader) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libslic3r_version.h.in ${CMAKE_CURRENT_BINARY_DIR}/libslic3r_version.h @ONLY) if (MINGW) add_compile_options(-Wa,-mbig-obj) endif () set(OpenVDBUtils_SOURCES "") if (TARGET OpenVDB::openvdb) set(OpenVDBUtils_SOURCES OpenVDBUtils.cpp OpenVDBUtils.hpp) endif() add_library(libslic3r STATIC pchheader.cpp pchheader.hpp BoundingBox.cpp BoundingBox.hpp BridgeDetector.cpp BridgeDetector.hpp ClipperUtils.cpp ClipperUtils.hpp Config.cpp Config.hpp EdgeGrid.cpp EdgeGrid.hpp ElephantFootCompensation.cpp ElephantFootCompensation.hpp ExPolygon.cpp ExPolygon.hpp ExPolygonCollection.cpp ExPolygonCollection.hpp Extruder.cpp Extruder.hpp ExtrusionEntity.cpp ExtrusionEntity.hpp ExtrusionEntityCollection.cpp ExtrusionEntityCollection.hpp ExtrusionSimulator.cpp ExtrusionSimulator.hpp FileParserError.hpp Fill/Fill.cpp Fill/Fill.hpp Fill/Fill3DHoneycomb.cpp Fill/Fill3DHoneycomb.hpp Fill/FillBase.cpp Fill/FillBase.hpp Fill/FillConcentric.cpp Fill/FillConcentric.hpp Fill/FillHoneycomb.cpp Fill/FillHoneycomb.hpp Fill/FillGyroid.cpp Fill/FillGyroid.hpp Fill/FillPlanePath.cpp Fill/FillPlanePath.hpp Fill/FillRectilinear.cpp Fill/FillRectilinear.hpp Fill/FillRectilinear2.cpp Fill/FillRectilinear2.hpp Fill/FillRectilinear3.cpp Fill/FillRectilinear3.hpp Flow.cpp Flow.hpp Format/3mf.cpp Format/3mf.hpp Format/AMF.cpp Format/AMF.hpp Format/OBJ.cpp Format/OBJ.hpp Format/objparser.cpp Format/objparser.hpp Format/PRUS.cpp Format/PRUS.hpp Format/STL.cpp Format/STL.hpp GCode/Analyzer.cpp GCode/Analyzer.hpp GCode/ThumbnailData.cpp GCode/ThumbnailData.hpp GCode/CoolingBuffer.cpp GCode/CoolingBuffer.hpp GCode/PostProcessor.cpp GCode/PostProcessor.hpp # GCode/PressureEqualizer.cpp # GCode/PressureEqualizer.hpp GCode/PreviewData.cpp GCode/PreviewData.hpp GCode/PrintExtents.cpp GCode/PrintExtents.hpp GCode/SpiralVase.cpp GCode/SpiralVase.hpp GCode/ToolOrdering.cpp GCode/ToolOrdering.hpp GCode/WipeTower.cpp GCode/WipeTower.hpp GCode.cpp GCode.hpp GCodeReader.cpp GCodeReader.hpp # GCodeSender.cpp # GCodeSender.hpp GCodeTimeEstimator.cpp GCodeTimeEstimator.hpp GCodeWriter.cpp GCodeWriter.hpp Geometry.cpp Geometry.hpp Int128.hpp KDTreeIndirect.hpp Layer.cpp Layer.hpp LayerRegion.cpp libslic3r.h "${CMAKE_CURRENT_BINARY_DIR}/libslic3r_version.h" Line.cpp Line.hpp Model.cpp Model.hpp CustomGCode.cpp CustomGCode.hpp Arrange.hpp Arrange.cpp MotionPlanner.cpp MotionPlanner.hpp MultiPoint.cpp MultiPoint.hpp MutablePriorityQueue.hpp ObjectID.cpp ObjectID.hpp PerimeterGenerator.cpp PerimeterGenerator.hpp PlaceholderParser.cpp PlaceholderParser.hpp Point.cpp Point.hpp Polygon.cpp Polygon.hpp PolygonTrimmer.cpp PolygonTrimmer.hpp Polyline.cpp Polyline.hpp Print.cpp Print.hpp PrintBase.cpp PrintBase.hpp PrintConfig.cpp PrintConfig.hpp PrintObject.cpp PrintRegion.cpp Semver.cpp ShortestPath.cpp ShortestPath.hpp SLAPrint.cpp SLAPrintSteps.cpp SLAPrintSteps.hpp SLAPrint.hpp Slicing.cpp Slicing.hpp SlicingAdaptive.cpp SlicingAdaptive.hpp SupportMaterial.cpp SupportMaterial.hpp Surface.cpp Surface.hpp SurfaceCollection.cpp SurfaceCollection.hpp SVG.cpp SVG.hpp Technologies.hpp Tesselate.cpp Tesselate.hpp TriangleMesh.cpp TriangleMesh.hpp utils.cpp Utils.hpp Time.cpp Time.hpp MTUtils.hpp Zipper.hpp Zipper.cpp MinAreaBoundingBox.hpp MinAreaBoundingBox.cpp miniz_extension.hpp miniz_extension.cpp SimplifyMesh.hpp SimplifyMeshImpl.hpp SimplifyMesh.cpp ${OpenVDBUtils_SOURCES} SLA/Common.hpp SLA/Common.cpp SLA/Pad.hpp SLA/Pad.cpp SLA/SupportTreeBuilder.hpp SLA/SupportTreeBuildsteps.hpp SLA/SupportTreeBuildsteps.cpp SLA/SupportTreeBuilder.cpp SLA/Concurrency.hpp SLA/SupportTree.hpp SLA/SupportTree.cpp # SLA/SupportTreeIGL.cpp SLA/Rotfinder.hpp SLA/Rotfinder.cpp SLA/BoostAdapter.hpp SLA/SpatIndex.hpp SLA/Raster.hpp SLA/Raster.cpp SLA/RasterWriter.hpp SLA/RasterWriter.cpp SLA/ConcaveHull.hpp SLA/ConcaveHull.cpp SLA/Hollowing.hpp SLA/Hollowing.cpp SLA/JobController.hpp SLA/SupportPoint.hpp SLA/SupportPointGenerator.hpp SLA/SupportPointGenerator.cpp SLA/Contour3D.hpp SLA/Contour3D.cpp SLA/EigenMesh3D.hpp SLA/Clustering.hpp ) if (SLIC3R_STATIC) set(CGAL_Boost_USE_STATIC_LIBS ON CACHE BOOL "" FORCE) endif () set(CGAL_DO_NOT_WARN_ABOUT_CMAKE_BUILD_TYPE ON CACHE BOOL "" FORCE) cmake_policy(PUSH) cmake_policy(SET CMP0011 NEW) find_package(CGAL REQUIRED) cmake_policy(POP) set(_cgal_defines "") if (MSVC AND "${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") # 32 bit MSVC workaround set(_cgal_defines CGAL_DO_NOT_USE_MPZF) endif () add_library(libslic3r_cgal OBJECT MeshBoolean.cpp MeshBoolean.hpp) target_include_directories(libslic3r_cgal PRIVATE ${CMAKE_CURRENT_BINARY_DIR} $ $) target_compile_definitions(libslic3r_cgal PRIVATE ${_cgal_defines} $) target_compile_options(libslic3r_cgal PRIVATE $) encoding_check(libslic3r) target_compile_definitions(libslic3r PUBLIC -DUSE_TBB -DTBB_USE_CAPTURED_EXCEPTION=0) target_include_directories(libslic3r PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIBNEST2D_INCLUDES} PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(libslic3r libnest2d admesh cereal libigl miniz boost_libs clipper nowide ${EXPAT_LIBRARIES} glu-libtess polypartition poly2tri qhull semver TBB::tbb $ ${CMAKE_DL_LIBS} ) if (TARGET OpenVDB::openvdb) target_link_libraries(libslic3r OpenVDB::openvdb) endif() if(WIN32) target_link_libraries(libslic3r Psapi.lib) endif() if(SLIC3R_PROFILE) target_link_libraries(slic3r Shiny) endif() if (SLIC3R_PCH AND NOT SLIC3R_SYNTAXONLY) add_precompiled_header(libslic3r pchheader.hpp FORCEINCLUDE) endif () target_sources(libslic3r PRIVATE $)