cmake_minimum_required(VERSION 3.13) project(libslic3r_gui) include(PrecompiledHeader) set(SLIC3R_GUI_SOURCES GUI/Widgets/AnimaController.hpp GUI/Widgets/AnimaController.cpp Config/Snapshot.cpp Config/Snapshot.hpp Config/Version.cpp Config/Version.hpp GUI/2DBed.cpp GUI/2DBed.hpp GUI/3DBed.cpp GUI/3DBed.hpp GUI/Widgets/StaticGroup.cpp GUI/Widgets/StaticGroup.hpp GUI/3DScene.cpp GUI/3DScene.hpp GUI/Widgets/FilamentLoad.cpp GUI/Widgets/FilamentLoad.hpp GUI/AboutDialog.cpp GUI/AboutDialog.hpp GUI/AmsMappingPopup.cpp GUI/AmsMappingPopupUpdate.cpp GUI/AmsMappingPopup.hpp GUI/AMSMaterialsSetting.cpp GUI/AMSMaterialsSetting.hpp GUI/AMSSetting.cpp GUI/AMSSetting.hpp GUI/AMSDryControl.cpp GUI/AMSDryControl.hpp GUI/AmsWidgets.cpp GUI/AmsWidgets.hpp GUI/Auxiliary.cpp GUI/AuxiliaryDataViewModel.cpp GUI/AuxiliaryDataViewModel.hpp GUI/AuxiliaryDialog.cpp GUI/AuxiliaryDialog.hpp GUI/AVVideoDecoder.cpp GUI/AVVideoDecoder.hpp GUI/Auxiliary.hpp GUI/BackgroundSlicingProcess.cpp GUI/BackgroundSlicingProcess.hpp GUI/PostProcessor.cpp GUI/PostProcessor.hpp GUI/BBLStatusBarBind.cpp GUI/BBLStatusBarBind.hpp GUI/BBLStatusBar.cpp GUI/BBLStatusBar.hpp GUI/BBLStatusBarSend.cpp GUI/BBLStatusBarSend.hpp GUI/BBLTopbar.cpp GUI/BBLTopbar.hpp GUI/BedShapeDialog.cpp GUI/BedShapeDialog.hpp GUI/BindDialog.cpp GUI/BindDialog.hpp GUI/BitmapCache.cpp GUI/BitmapCache.hpp GUI/BitmapComboBox.cpp GUI/BitmapComboBox.hpp GUI/BonjourDialog.cpp GUI/BonjourDialog.hpp GUI/BuildCommit.cpp GUI/BuildCommit.hpp GUI/CrealityDiscoveryDialog.cpp GUI/CrealityDiscoveryDialog.hpp GUI/calib_dlg.cpp GUI/calib_dlg.hpp GUI/Calibration.cpp GUI/Calibration.hpp GUI/CalibrationPanel.cpp GUI/CalibrationPanel.hpp GUI/CalibrationWizardCaliPage.cpp GUI/CalibrationWizardCaliPage.hpp GUI/CalibrationWizard.cpp GUI/CalibrationWizard.hpp GUI/CalibrationWizardPage.cpp GUI/CalibrationWizardPage.hpp GUI/CalibrationWizardPresetPage.cpp GUI/CalibrationWizardPresetPage.hpp GUI/CalibrationWizardSavePage.cpp GUI/CalibrationWizardSavePage.hpp GUI/CalibrationWizardStartPage.cpp GUI/CalibrationWizardStartPage.hpp GUI/CaliHistoryDialog.cpp GUI/CaliHistoryDialog.hpp GUI/Camera.cpp GUI/Camera.hpp GUI/CameraPopup.cpp GUI/CameraPopup.hpp GUI/CameraUtils.cpp GUI/CameraUtils.hpp GUI/CloneDialog.cpp GUI/CloneDialog.hpp GUI/ConfigManipulation.cpp GUI/ConfigManipulation.hpp GUI/ConfigValueFormatter.cpp GUI/ConfigValueFormatter.hpp GUI/ConfigWizard.cpp GUI/ConfigWizard.hpp GUI/ConfigWizard_private.hpp GUI/ConnectPrinter.cpp GUI/ConnectPrinter.hpp GUI/CreatePresetsDialog.cpp GUI/CreatePresetsDialog.hpp GUI/DailyTips.cpp GUI/DailyTips.hpp GUI/DesktopIntegrationDialog.cpp GUI/DesktopIntegrationDialog.hpp GUI/DeviceManager.cpp GUI/DeviceManager.hpp GUI/Downloader.cpp GUI/DownloaderFileGet.cpp GUI/DownloaderFileGet.hpp GUI/Downloader.hpp GUI/DownloadProgressDialog.cpp GUI/DownloadProgressDialog.hpp GUI/PluginSource.hpp GUI/PluginSort.hpp GUI/PluginStatus.hpp GUI/PluginPickerDialog.cpp GUI/PluginPickerDialog.hpp GUI/PluginsDialog.cpp GUI/PluginsDialog.hpp GUI/SpeedDialDialog.cpp GUI/SpeedDialDialog.hpp GUI/ActionRegistry.cpp GUI/ActionRegistry.hpp GUI/PluginsConfigDialog.cpp GUI/PluginsConfigDialog.hpp GUI/ProcessRunner.cpp GUI/ProcessRunner.hpp GUI/TerminalDialog.cpp GUI/TerminalDialog.hpp GUI/PluginProgressDialog.cpp GUI/PluginProgressDialog.hpp GUI/PluginWebDialog.cpp GUI/PluginWebDialog.hpp GUI/DragCanvas.cpp GUI/DragCanvas.hpp GUI/EditGCodeDialog.cpp GUI/EditGCodeDialog.hpp GUI/EncodedFilament.hpp GUI/EncodedFilament.cpp GUI/ExtraRenderers.cpp GUI/ExtraRenderers.hpp GUI/ExtrusionCalibration.cpp GUI/ExtrusionCalibration.hpp GUI/Field.cpp GUI/Field.hpp GUI/FileArchiveDialog.cpp GUI/FileArchiveDialog.hpp GUI/format.hpp GUI/GCodeViewer.cpp GUI/GCodeViewer.hpp GUI/Gizmos/GizmoObjectManipulation.cpp GUI/Gizmos/GizmoObjectManipulation.hpp GUI/Gizmos/GLGizmoAssembly.cpp GUI/Gizmos/GLGizmoAssembly.hpp GUI/Gizmos/GLGizmoBase.cpp GUI/Gizmos/GLGizmoBase.hpp GUI/Gizmos/GLGizmoBrimEars.cpp GUI/Gizmos/GLGizmoBrimEars.hpp GUI/Gizmos/GLGizmoCut.cpp GUI/Gizmos/GLGizmoCut.hpp GUI/Gizmos/GLGizmoEmboss.cpp GUI/Gizmos/GLGizmoEmboss.hpp #GUI/Gizmos/GLGizmoFaceDetector.cpp #GUI/Gizmos/GLGizmoFaceDetector.hpp GUI/Gizmos/GLGizmoFdmSupports.cpp GUI/Gizmos/GLGizmoFdmSupports.hpp GUI/Gizmos/GLGizmoFlatten.cpp GUI/Gizmos/GLGizmoFlatten.hpp GUI/Gizmos/GLGizmoFuzzySkin.cpp GUI/Gizmos/GLGizmoFuzzySkin.hpp #GUI/Gizmos/GLGizmoHollow.cpp #GUI/Gizmos/GLGizmoHollow.hpp GUI/Gizmos/GLGizmoMeasure.cpp GUI/Gizmos/GLGizmoMeasure.hpp GUI/Gizmos/GLGizmoMeshBoolean.cpp GUI/Gizmos/GLGizmoMeshBoolean.hpp GUI/Gizmos/GLGizmoMmuSegmentation.cpp GUI/Gizmos/GLGizmoMmuSegmentation.hpp GUI/Gizmos/GLGizmoMove.cpp GUI/Gizmos/GLGizmoMove.hpp GUI/Gizmos/GLGizmoPainterBase.cpp GUI/Gizmos/GLGizmoPainterBase.hpp GUI/Gizmos/GLGizmoRotate.cpp GUI/Gizmos/GLGizmoRotate.hpp GUI/Gizmos/GLGizmoScale.cpp GUI/Gizmos/GLGizmoScale.hpp GUI/Gizmos/GLGizmosCommon.cpp GUI/Gizmos/GLGizmosCommon.hpp GUI/Gizmos/GLGizmoSeam.cpp GUI/Gizmos/GLGizmoSeam.hpp GUI/Gizmos/GLGizmoSimplify.cpp GUI/Gizmos/GLGizmoSimplify.hpp #GUI/Gizmos/GLGizmoSlaSupports.cpp #GUI/Gizmos/GLGizmoSlaSupports.hpp GUI/Gizmos/GLGizmosManager.cpp GUI/Gizmos/GLGizmosManager.hpp GUI/Gizmos/GLGizmoSVG.cpp GUI/Gizmos/GLGizmoSVG.hpp GUI/Gizmos/GLGizmoUtils.cpp GUI/Gizmos/GLGizmoUtils.hpp #GUI/Gizmos/GLGizmoText.cpp #GUI/Gizmos/GLGizmoText.hpp GUI/GLCanvas3D.cpp GUI/GLCanvas3D.hpp GUI/GLModel.cpp GUI/GLModel.hpp GUI/GLSelectionRectangle.cpp GUI/GLSelectionRectangle.hpp GUI/GLShader.cpp GUI/GLShader.hpp GUI/GLShadersManager.cpp GUI/GLShadersManager.hpp GUI/GLTexture.cpp GUI/GLTexture.hpp GUI/GLToolbar.cpp GUI/GuiColor.cpp GUI/GuiColor.hpp GUI/GLToolbar.hpp GUI/ImageDPIFrame.cpp GUI/ImageDPIFrame.hpp GUI/IMediaController.hpp GUI/GUI_App.cpp GUI/GUI_App.hpp GUI/GUI_AuxiliaryList.cpp GUI/GUI_AuxiliaryList.hpp GUI/GUI_Colors.cpp GUI/GUI_Colors.hpp GUI/GUI.cpp GUI/GUI_Factories.cpp GUI/GUI_Factories.hpp GUI/GUI_Geometry.cpp GUI/GUI_Geometry.hpp GUI/GUI.hpp GUI/GUI_Init.cpp GUI/GUI_Init.hpp GUI/GUI_ObjectLayers.cpp GUI/GUI_ObjectLayers.hpp GUI/GUI_ObjectList.cpp GUI/GUI_ObjectList.hpp GUI/GUI_ObjectSettings.cpp GUI/GUI_ObjectSettings.hpp GUI/GUI_ObjectTable.cpp GUI/GUI_ObjectTable.hpp GUI/GUI_ObjectTableSettings.cpp GUI/GUI_ObjectTableSettings.hpp GUI/GUI_Preview.cpp GUI/GUI_Preview.hpp GUI/GUI_Utils.cpp GUI/GUI_Utils.hpp GUI/HintNotification.cpp GUI/HintNotification.hpp GUI/ThermalPreconditioningDialog.cpp GUI/ThermalPreconditioningDialog.hpp GUI/HMS.cpp GUI/HMS.hpp GUI/HMSPanel.cpp GUI/HMSPanel.hpp GUI/HttpServer.cpp GUI/HttpServer.hpp GUI/I18N.cpp GUI/I18N.hpp GUI/DragDropPanel.cpp GUI/DragDropPanel.hpp GUI/CapsuleButton.cpp GUI/CapsuleButton.hpp GUI/FilamentMapPanel.cpp GUI/FilamentMapPanel.hpp GUI/FilamentMapDialog.cpp GUI/FilamentMapDialog.hpp GUI/IconManager.cpp GUI/IconManager.hpp GUI/ImageGrid.cpp GUI/ImageGrid.h GUI/ImGuiWrapper.cpp GUI/FilamentPickerDialog.cpp GUI/FilamentPickerDialog.hpp GUI/FilamentBitmapUtils.cpp GUI/FilamentBitmapUtils.hpp GUI/BaseTransparentDPIFrame.cpp GUI/BaseTransparentDPIFrame.hpp GUI/SyncAmsInfoDialog.cpp GUI/SyncAmsInfoDialog.hpp GUI/ImGuiWrapper.hpp GUI/IMSlider.cpp GUI/IMSlider.hpp GUI/DeviceErrorDialog.hpp GUI/DeviceErrorDialog.cpp GUI/IMToolbar.cpp GUI/IMToolbar.hpp GUI/InstanceCheck.cpp GUI/InstanceCheck.hpp GUI/Jobs/ArrangeJob.cpp GUI/Jobs/ArrangeJob.hpp GUI/Jobs/BindJob.cpp GUI/Jobs/BindJob.hpp GUI/Jobs/BoostThreadWorker.cpp GUI/Jobs/BoostThreadWorker.hpp GUI/Jobs/BusyCursorJob.hpp GUI/Jobs/CreateFontNameImageJob.cpp GUI/Jobs/CreateFontNameImageJob.hpp GUI/Jobs/CreateFontStyleImagesJob.cpp GUI/Jobs/CreateFontStyleImagesJob.hpp GUI/Jobs/EmbossJob.cpp GUI/Jobs/EmbossJob.hpp GUI/Jobs/FillBedJob.cpp GUI/Jobs/FillBedJob.hpp GUI/Jobs/Job.hpp GUI/Jobs/NotificationProgressIndicator.cpp GUI/Jobs/NotificationProgressIndicator.hpp GUI/Jobs/OAuthJob.cpp GUI/Jobs/OAuthJob.hpp GUI/Jobs/OrientJob.cpp GUI/Jobs/OrientJob.hpp GUI/Jobs/PlaterWorker.hpp GUI/Jobs/PrintJob.cpp GUI/Jobs/PrintJob.hpp GUI/Jobs/ProgressIndicator.hpp GUI/Jobs/RotoptimizeJob.cpp GUI/Jobs/RotoptimizeJob.hpp GUI/Jobs/SendJob.cpp GUI/Jobs/SendJob.hpp GUI/Jobs/SLAImportDialog.hpp GUI/Jobs/SLAImportJob.cpp GUI/Jobs/SLAImportJob.hpp GUI/Jobs/ThreadSafeQueue.hpp GUI/Jobs/UpgradeNetworkJob.cpp GUI/Jobs/UpgradeNetworkJob.hpp GUI/Jobs/Worker.hpp GUI/KBShortcutsDialog.cpp GUI/KBShortcutsDialog.hpp GUI/LibVGCode/LibVGCodeWrapper.hpp GUI/LibVGCode/LibVGCodeWrapper.cpp GUI/LinuxDisplayBackend.cpp GUI/LinuxDisplayBackend.hpp GUI/MainFrame.cpp GUI/MainFrame.hpp GUI/MarkdownTip.cpp GUI/MarkdownTip.hpp GUI/MediaFilePanel.cpp GUI/MediaFilePanel.h GUI/MediaPlayCtrl.cpp GUI/MediaPlayCtrl.h GUI/WebRtcMediaController.cpp GUI/WebRtcMediaController.hpp GUI/MeshUtils.cpp GUI/MeshUtils.hpp GUI/ModelMall.cpp GUI/ModelMall.hpp GUI/MonitorBasePanel.cpp GUI/BBLStatusBarPrint.hpp GUI/BBLStatusBarPrint.cpp GUI/MonitorBasePanel.h GUI/Monitor.cpp GUI/Monitor.hpp GUI/MonitorPage.cpp GUI/MonitorPage.hpp GUI/MixedFilamentDialog.cpp GUI/MixedFilamentDialog.hpp GUI/GradientCurveEditor.cpp GUI/GradientCurveEditor.hpp GUI/ColorDecomposeDialog.cpp GUI/ColorDecomposeDialog.hpp GUI/ColorDecomposeSupport.cpp GUI/ColorDecomposeSupport.hpp GUI/TextureImportDialog.cpp GUI/TextureImportDialog.hpp GUI/Mouse3DController.cpp GUI/Mouse3DController.hpp GUI/MsgDialog.cpp GUI/MsgDialog.hpp GUI/MultiChoiceDialog.hpp GUI/MultiChoiceDialog.cpp GUI/MultiMachine.cpp GUI/MultiMachine.hpp GUI/MultiMachineManagerPage.cpp GUI/MultiMachineManagerPage.hpp GUI/MultiMachinePage.cpp GUI/MultiMachinePage.hpp GUI/MultiPrintJob.cpp GUI/MultiPrintJob.hpp GUI/MultiSendMachineModel.cpp GUI/MultiSendMachineModel.hpp GUI/MultiTaskManagerPage.cpp GUI/MultiTaskManagerPage.hpp GUI/MultiTaskModel.cpp GUI/MultiTaskModel.hpp GUI/NetworkTestDialog.cpp GUI/NetworkTestDialog.hpp GUI/Notebook.cpp GUI/Notebook.hpp GUI/NotificationManager.cpp GUI/NotificationManager.hpp GUI/OAuthDialog.cpp GUI/OAuthDialog.hpp GUI/ObjColorDialog.cpp GUI/ObjColorDialog.hpp GUI/ObjectDataViewModel.cpp GUI/ObjectDataViewModel.hpp GUI/OG_CustomCtrl.cpp GUI/OG_CustomCtrl.hpp GUI/OpenGLManager.cpp GUI/OpenGLManager.hpp GUI/OptionsGroup.cpp GUI/OptionsGroup.hpp GUI/ParamsDialog.cpp GUI/ParamsDialog.hpp GUI/ParamsPanel.cpp GUI/ParamsPanel.hpp GUI/PartPlate.cpp GUI/PartPlate.hpp GUI/FilamentGroupPopup.hpp GUI/FilamentGroupPopup.cpp GUI/PhysicalPrinterDialog.cpp GUI/PhysicalPrinterDialog.hpp GUI/Plater.cpp GUI/Plater.hpp GUI/PlateSettingsDialog.cpp GUI/PlateSettingsDialog.hpp GUI/Preferences.cpp GUI/Preferences.hpp GUI/PresetBundleDialog.cpp GUI/PresetBundleDialog.hpp GUI/ExportPresetBundleDialog.cpp GUI/ExportPresetBundleDialog.hpp GUI/PresetComboBoxes.cpp GUI/PresetComboBoxes.hpp GUI/PresetHints.cpp GUI/PresetHints.hpp GUI/PrinterCloudAuthDialog.cpp GUI/PrinterCloudAuthDialog.hpp GUI/Printer/PrinterFileSystem.cpp GUI/Printer/PrinterFileSystem.h GUI/PrinterWebView.cpp GUI/PrinterWebViewHandler.cpp GUI/PrinterWebViewHandler.hpp GUI/PrinterWebView.hpp GUI/PrintHostDialogs.cpp GUI/PrintHostDialogs.hpp GUI/PrintOptionsDialog.cpp GUI/PrintOptionsDialog.hpp GUI/PrivacyUpdateDialog.cpp GUI/PrivacyUpdateDialog.hpp GUI/ProgressStatusBar.cpp GUI/ProgressStatusBar.hpp GUI/Project.cpp GUI/ProjectDirtyStateManager.cpp GUI/ProjectDirtyStateManager.hpp GUI/Project.hpp GUI/PublishDialog.cpp GUI/PublishDialog.hpp GUI/PublishSettingsDialog.cpp GUI/PublishSettingsDialog.hpp GUI/PurgeModeDialog.cpp GUI/PurgeModeDialog.hpp GUI/RammingChart.cpp GUI/RammingChart.hpp GUI/RecenterDialog.cpp GUI/RecenterDialog.hpp GUI/ReleaseNote.cpp GUI/ReleaseNote.hpp GUI/RemovableDriveManager.cpp GUI/RemovableDriveManager.hpp GUI/SavePresetDialog.cpp GUI/SavePresetDialog.hpp GUI/SceneRaycaster.cpp GUI/SceneRaycaster.hpp GUI/PartSkipCommon.hpp GUI/PartSkipDialog.cpp GUI/PartSkipDialog.hpp GUI/SkipPartCanvas.cpp GUI/SkipPartCanvas.hpp GUI/Search.cpp GUI/Search.hpp GUI/Selection.cpp GUI/Selection.hpp GUI/SelectMachine.cpp GUI/SelectMachine.hpp GUI/PrePrintChecker.hpp GUI/PrePrintChecker.cpp GUI/SelectMachinePop.cpp GUI/SelectMachinePop.hpp GUI/SendMultiMachinePage.cpp GUI/SendMultiMachinePage.hpp GUI/SendSystemInfoDialog.cpp GUI/SendSystemInfoDialog.hpp GUI/SendToPrinter.cpp GUI/SendToPrinter.hpp GUI/SingleChoiceDialog.cpp GUI/SingleChoiceDialog.hpp GUI/SliceInfoPanel.cpp GUI/SliceInfoPanel.hpp GUI/SlicingProgressNotification.cpp GUI/SlicingProgressNotification.hpp GUI/StatusPanel.cpp GUI/StatusPanel.hpp GUI/StepMeshDialog.cpp GUI/StepMeshDialog.hpp GUI/SurfaceDrag.cpp GUI/SurfaceDrag.hpp GUI/Tabbook.cpp GUI/Tabbook.hpp GUI/TabButton.cpp GUI/TabButton.hpp GUI/Tab.cpp GUI/Tab.hpp GUI/TaskManager.cpp GUI/TaskManager.hpp GUI/TextLines.cpp GUI/TextLines.hpp GUI/TickCode.cpp GUI/TickCode.hpp GUI/TroubleshootDialog.cpp GUI/TroubleshootDialog.hpp GUI/UnsavedChangesDialog.cpp GUI/UnsavedChangesDialog.hpp GUI/UpdateDialogs.cpp GUI/UpdateDialogs.hpp GUI/NetworkPluginDialog.cpp GUI/NetworkPluginDialog.hpp GUI/UpgradePanel.cpp GUI/UpgradePanel.hpp GUI/UserManager.cpp GUI/UserManager.hpp GUI/UserNotification.cpp GUI/UserNotification.hpp GUI/WebDownPluginDlg.cpp GUI/WebDownPluginDlg.hpp GUI/WebGuideDialog.cpp GUI/WebGuideDialog.hpp GUI/WebUserLoginDialog.cpp GUI/WebUserLoginDialog.hpp GUI/WebViewDialog.cpp GUI/WebViewDialog.hpp GUI/WebMediaController.hpp GUI/WebMediaController.cpp GUI/Widgets/AMSControl.cpp GUI/Widgets/AMSControl.hpp GUI/Widgets/AMSItem.cpp GUI/Widgets/AMSItem.hpp GUI/Widgets/MultiNozzleSync.cpp GUI/Widgets/MultiNozzleSync.hpp GUI/Widgets/AxisCtrlButton.cpp GUI/Widgets/AxisCtrlButton.hpp GUI/SafetyOptionsDialog.hpp GUI/SafetyOptionsDialog.cpp GUI/Widgets/Button.cpp GUI/Widgets/Button.hpp GUI/Widgets/CheckBox.cpp GUI/Widgets/CheckBox.hpp GUI/Widgets/CheckList.cpp GUI/Widgets/CheckList.hpp GUI/Widgets/ComboBox.cpp GUI/Widgets/ComboBox.hpp GUI/Widgets/DialogButtons.cpp GUI/Widgets/DialogButtons.hpp GUI/Widgets/DropDown.cpp GUI/Widgets/DropDown.hpp GUI/Widgets/ErrorMsgStaticText.cpp GUI/Widgets/ErrorMsgStaticText.hpp GUI/Widgets/FanControl.cpp GUI/Widgets/FanControl.hpp GUI/Widgets/HyperLink.cpp GUI/Widgets/HyperLink.hpp GUI/Widgets/ImageSwitchButton.cpp GUI/Widgets/ImageSwitchButton.hpp GUI/Widgets/Label.cpp GUI/Widgets/LabeledStaticBox.cpp GUI/Widgets/LabeledStaticBox.hpp GUI/Widgets/Label.hpp GUI/Widgets/PopupWindow.cpp GUI/Widgets/PopupWindow.hpp GUI/Widgets/ProgressBar.cpp GUI/Widgets/ProgressBar.hpp GUI/Widgets/ProgressDialog.cpp GUI/Widgets/ProgressDialog.hpp GUI/Widgets/RadioBox.cpp GUI/Widgets/RadioBox.hpp GUI/Widgets/RadioGroup.cpp GUI/Widgets/RadioGroup.hpp GUI/Widgets/RoundedRectangle.cpp GUI/Widgets/RoundedRectangle.hpp GUI/Widgets/Scrollbar.cpp GUI/Widgets/Scrollbar.hpp GUI/Widgets/ScrolledWindow.cpp GUI/Widgets/ScrolledWindow.hpp GUI/Widgets/SideButton.cpp GUI/Widgets/SideButton.hpp GUI/Widgets/SideMenuPopup.cpp GUI/Widgets/SideMenuPopup.hpp GUI/Widgets/SideTools.cpp GUI/Widgets/SideTools.hpp GUI/Widgets/SpinInput.cpp GUI/Widgets/SpinInput.hpp GUI/Widgets/StateColor.cpp GUI/Widgets/StateColor.hpp GUI/Widgets/StateHandler.cpp GUI/Widgets/StateHandler.hpp GUI/Widgets/StaticBox.cpp GUI/Widgets/StaticBox.hpp GUI/Widgets/StaticLine.cpp GUI/Widgets/StaticLine.hpp GUI/Widgets/StepCtrl.cpp GUI/Widgets/StepCtrl.hpp GUI/Widgets/SwitchButton.cpp GUI/Widgets/SwitchButton.hpp GUI/Widgets/TabCtrl.cpp GUI/Widgets/TabCtrl.hpp GUI/Widgets/TempInput.cpp GUI/Widgets/TempInput.hpp GUI/Widgets/TextInput.cpp GUI/Widgets/TextInput.hpp GUI/Widgets/WebViewHostDialog.cpp GUI/Widgets/WebViewHostDialog.hpp GUI/Widgets/WebView.cpp GUI/Widgets/WebView.hpp GUI/WipeTowerDialog.cpp GUI/wxExtensions.cpp GUI/wxExtensions.hpp GUI/wxMediaCtrl3.cpp GUI/wxMediaCtrl3.h plugin/PythonInterpreter.cpp plugin/PythonInterpreter.hpp plugin/PythonPluginBridge.cpp plugin/PythonPluginBridge.hpp plugin/PythonPluginInterface.hpp plugin/PyPluginPackage.hpp plugin/PluginBindingUtils.hpp plugin/host/PluginHost.cpp plugin/host/PluginHost.hpp plugin/host/PluginHostBindings.hpp plugin/host/PluginHostApp.cpp plugin/host/PluginHostGeometry.cpp plugin/host/PluginHostMesh.cpp plugin/host/PluginHostMesh.hpp plugin/host/PluginHostModel.cpp plugin/host/PluginHostPresets.cpp plugin/host/PluginHostSlicing.cpp plugin/host/PluginHostUi.cpp plugin/host/PluginHostUi.hpp plugin/host/PluginPages.cpp plugin/host/PluginPages.hpp plugin/CloudPluginService.cpp plugin/CloudPluginService.hpp plugin/PluginFsUtils.cpp plugin/PluginFsUtils.hpp plugin/PluginConfig.cpp plugin/PluginConfig.hpp plugin/PluginLoader.cpp plugin/PluginLoader.hpp plugin/PluginDescriptor.hpp plugin/PluginHooks.cpp plugin/PluginHooks.hpp plugin/PluginManager.cpp plugin/PluginManager.hpp plugin/PluginAuditManager.cpp plugin/PluginAuditManager.hpp plugin/PluginResolver.cpp plugin/PluginResolver.hpp plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.hpp plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.cpp plugin/pluginTypes/printerAgent/PrinterAgentPluginCapabilityTrampoline.hpp plugin/pluginTypes/pages/PagesPluginCapability.hpp plugin/pluginTypes/pages/PagesPluginCapability.cpp plugin/pluginTypes/pages/PagesPluginCapabilityTrampoline.hpp plugin/pluginTypes/script/ScriptPluginCapability.hpp plugin/pluginTypes/script/ScriptPluginCapability.cpp plugin/pluginTypes/script/ScriptPluginCapabilityTrampoline.hpp plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.hpp plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.cpp plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapabilityTrampoline.hpp pchheader.cpp pchheader.hpp Utils/ASCIIFolding.cpp Utils/ASCIIFolding.hpp Utils/AstroBox.cpp Utils/AstroBox.hpp Utils/bambu_networking.hpp Utils/Bonjour.cpp Utils/Bonjour.hpp Utils/CalibUtils.cpp Utils/CalibUtils.hpp Utils/ColorSpaceConvert.cpp Utils/ColorSpaceConvert.hpp Utils/CrealityPrint.cpp Utils/CrealityPrint.hpp Utils/CrealityPrintAgent.cpp Utils/CrealityPrintAgent.hpp Utils/CrealityHostDiscovery.cpp Utils/CrealityHostDiscovery.hpp Utils/Duet.cpp Utils/Duet.hpp Utils/ElegooLink.cpp Utils/ElegooLink.hpp Utils/EmbossStyleManager.cpp Utils/EmbossStyleManager.hpp Utils/ESP3D.cpp Utils/ESP3D.hpp Utils/FileHelp.cpp Utils/FileHelp.hpp Utils/FixModelByCgal.cpp Utils/FixModelByCgal.hpp Utils/FlashAir.cpp Utils/FlashAir.hpp Utils/Flashforge.cpp Utils/Flashforge.hpp Utils/FontConfigHelp.cpp Utils/FontConfigHelp.hpp Utils/HexFile.cpp Utils/HexFile.hpp Utils/Http.cpp Utils/Http.hpp Utils/InstanceID.cpp Utils/InstanceID.hpp Utils/json_diff.cpp Utils/json_diff.hpp Utils/minilzo_extension.cpp Utils/minilzo_extension.hpp Utils/MKS.cpp Utils/MKS.hpp Utils/NetworkAgent.cpp Utils/NetworkAgent.hpp Utils/NetworkAgentFactory.hpp Utils/NetworkAgentFactory.cpp Utils/ICloudServiceAgent.hpp Utils/IPrinterAgent.hpp Utils/ICameraSignalingChannel.hpp Utils/OrcaCloudServiceAgent.cpp Utils/OrcaCloudServiceAgent.hpp Utils/OrcaPrinterAgent.cpp Utils/OrcaPrinterAgent.hpp Utils/QidiPrinterAgent.cpp Utils/QidiPrinterAgent.hpp Utils/SnapmakerPrinterAgent.cpp Utils/SnapmakerPrinterAgent.hpp Utils/MoonrakerPrinterAgent.cpp Utils/MoonrakerPrinterAgent.hpp Utils/Moonraker.cpp Utils/Moonraker.hpp Utils/BBLCloudServiceAgent.cpp Utils/BBLCloudServiceAgent.hpp Utils/BBLPrinterAgent.cpp Utils/BBLPrinterAgent.hpp Utils/BBLNetworkPlugin.cpp Utils/BBLNetworkPlugin.hpp Utils/Obico.cpp Utils/Obico.hpp Utils/OctoPrint.cpp Utils/OctoPrint.hpp Utils/PresetUpdater.cpp Utils/PresetUpdater.hpp Utils/PrintHost.cpp Utils/PrintHost.hpp Utils/Process.cpp Utils/Process.hpp Utils/ProfileDescription.hpp Utils/Profile.hpp Utils/RaycastManager.cpp Utils/RaycastManager.hpp Utils/Repetier.cpp Utils/Repetier.hpp Utils/Serial.cpp Utils/Serial.hpp Utils/SerialMessage.hpp Utils/SerialMessageType.hpp Utils/SimplyPrint.cpp Utils/SimplyPrint.hpp Utils/TCPConsole.cpp Utils/TCPConsole.hpp Utils/UndoRedo.cpp Utils/UndoRedo.hpp Utils/WebSocketClient.hpp Utils/3DPrinterOS.hpp Utils/3DPrinterOS.cpp Utils/WxFontUtils.cpp Utils/WxFontUtils.hpp Utils/FileTransferUtils.cpp Utils/FileTransferUtils.hpp Utils/wxInspectorPlugins/DPIAwarePlugin.hpp Utils/wxInspectorPlugins/DPIAwarePlugin.cpp Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp Utils/wxInspectorPlugins/Registration.hpp ) add_subdirectory(GUI/DeviceCore) add_subdirectory(GUI/DeviceTab) if (WIN32) list(APPEND SLIC3R_GUI_SOURCES GUI/dark_mode/dark_mode.hpp GUI/dark_mode/IatHook.hpp GUI/dark_mode/UAHMenuBar.hpp GUI/dark_mode.hpp GUI/dark_mode.cpp ) endif () if (APPLE) list(APPEND SLIC3R_GUI_SOURCES Utils/RetinaHelperImpl.mm Utils/MacDarkMode.mm GUI/RemovableDriveManagerMM.mm GUI/RemovableDriveManagerMM.h GUI/Mouse3DHandlerMac.mm GUI/InstanceCheckMac.mm GUI/InstanceCheckMac.h GUI/DeepLinkHandlerMac.mm GUI/DeepLinkHandlerMac.h GUI/GUI_UtilsMac.mm ) FIND_LIBRARY(DISKARBITRATION_LIBRARY DiskArbitration) endif () set(ORCA_UPDATER_SIG_KEY_B64 "${ORCA_UPDATER_SIG_KEY}") string(STRIP "${ORCA_UPDATER_SIG_KEY_B64}" ORCA_UPDATER_SIG_KEY_B64) string(REPLACE "\n" "" ORCA_UPDATER_SIG_KEY_B64 "${ORCA_UPDATER_SIG_KEY_B64}") string(REPLACE "\r" "" ORCA_UPDATER_SIG_KEY_B64 "${ORCA_UPDATER_SIG_KEY_B64}") string(REPLACE "\t" "" ORCA_UPDATER_SIG_KEY_B64 "${ORCA_UPDATER_SIG_KEY_B64}") string(REPLACE " " "" ORCA_UPDATER_SIG_KEY_B64 "${ORCA_UPDATER_SIG_KEY_B64}") set(ORCA_UPDATER_SIG_KEY_AVAILABLE 0) if(ORCA_UPDATER_SIG_KEY_B64) set(ORCA_UPDATER_SIG_KEY_AVAILABLE 1) endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/GeneratedConfig.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/GeneratedConfig.hpp @ONLY) if (WIN32) add_library(libslic3r_gui STATIC ${SLIC3R_GUI_SOURCES} ../dev-utils/BaseException.cpp ../dev-utils/BaseException.h ../dev-utils/StackWalker.cpp ../dev-utils/StackWalker.h ) else () add_library(libslic3r_gui STATIC ${SLIC3R_GUI_SOURCES}) endif () target_include_directories(libslic3r_gui PRIVATE Utils ${CMAKE_CURRENT_BINARY_DIR}) if (WIN32) target_include_directories(libslic3r_gui SYSTEM PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../deps/WebView2/include) target_link_libraries(libslic3r_gui Advapi32) endif() source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SLIC3R_GUI_SOURCES}) encoding_check(libslic3r_gui) # Only BuildCommit.cpp includes the generated header, plus BaseException.cpp on # Windows. Both build into libslic3r_gui, so the header only has to exist before # that target builds. set(_git_commit_hash_header "${CMAKE_CURRENT_BINARY_DIR}/git_commit_hash.h") add_custom_target(git_commit_hash_header BYPRODUCTS "${_git_commit_hash_header}" COMMAND ${CMAKE_COMMAND} "-DSOURCE_DIR=${CMAKE_SOURCE_DIR}" "-DOUT_FILE=${_git_commit_hash_header}" -P "${CMAKE_CURRENT_LIST_DIR}/GitCommitHash.cmake" COMMENT "Resolving the git commit hash") add_dependencies(libslic3r_gui git_commit_hash_header) if(APPLE AND CMAKE_VERSION VERSION_GREATER_EQUAL "4.0") set(_opengl_link_lib "") else() set(_opengl_link_lib OpenGL::GL) endif() target_link_libraries(libslic3r_gui libslic3r cereal::cereal imgui imguizmo minilzo libvgcode md4c-html glad ${_opengl_link_lib} hidapi mdns ${wxWidgets_LIBRARIES} glfw libcurl OpenSSL::SSL OpenSSL::Crypto LibDataChannel::LibDataChannel noise::noise pybind11::embed) if (CMAKE_SYSTEM_NAME STREQUAL "Linux") # Linux finds wxWidgets in module mode, whose include dirs and definitions # only apply at src/ directory scope; export them from the target so wx # headers reach GUI-header consumers outside src/ (tests). The CONFIG-mode # wx::* imported targets used on Windows/macOS already propagate these. target_include_directories(libslic3r_gui SYSTEM PUBLIC ${wxWidgets_INCLUDE_DIRS}) target_compile_definitions(libslic3r_gui PUBLIC ${wxWidgets_DEFINITIONS} $<$:${wxWidgets_DEFINITIONS_DEBUG}>) endif () if (MSVC) target_link_libraries(libslic3r_gui Setupapi.lib) elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux") FIND_LIBRARY(WAYLAND_SERVER_LIBRARIES NAMES wayland-server) FIND_LIBRARY(WAYLAND_EGL_LIBRARIES NAMES wayland-egl) FIND_LIBRARY(WAYLAND_CLIENT_LIBRARIES NAMES wayland-client) find_package(CURL REQUIRED) target_link_libraries(libslic3r_gui OpenGL::EGL ${DBUS_LIBRARIES} ${WAYLAND_SERVER_LIBRARIES} ${WAYLAND_EGL_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} ${CURL_LIBRARIES} ) elseif (APPLE) if(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0") target_link_libraries(libslic3r_gui ${DISKARBITRATION_LIBRARY} "-framework Security" "-framework OpenGL") else() target_link_libraries(libslic3r_gui ${DISKARBITRATION_LIBRARY} "-framework Security") endif() endif() if (SLIC3R_STATIC) # FIXME: This was previously exported by wx-config but the wxWidgets # cmake build forgets this and the build fails in debug mode (or on raspberry release) target_compile_definitions(libslic3r_gui PUBLIC -DwxDEBUG_LEVEL=0) endif() if (SPNAV_LIB) target_link_libraries(libslic3r_gui ${SPNAV_LIB}) endif() if (SLIC3R_STATIC AND NOT SLIC3R_STATIC_EXCLUDE_CURL AND UNIX AND NOT APPLE) target_compile_definitions(libslic3r_gui PRIVATE OPENSSL_CERT_OVERRIDE) endif () if (SLIC3R_PCH AND NOT SLIC3R_SYNTAXONLY) add_precompiled_header(libslic3r_gui pchheader.hpp FORCEINCLUDE) elseif (MSVC) # Puts the Windows headers first when the PCH is off. target_compile_options(libslic3r_gui PRIVATE "/FIslic3r/win_platform.hpp") endif () if (APPLE) # Static FFmpeg from the deps install: nothing to bundle into the .app, # no rpath/install_name handling. Order matters: avformat -> avcodec -> swscale -> avutil. find_library(LIBAVFORMAT_LIBRARY NAMES libavformat.a PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) find_library(LIBAVCODEC_LIBRARY NAMES libavcodec.a PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) find_library(LIBSWSCALE_LIBRARY NAMES libswscale.a PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) find_library(LIBAVUTIL_LIBRARY NAMES libavutil.a PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) if (NOT LIBAVFORMAT_LIBRARY OR NOT LIBAVCODEC_LIBRARY OR NOT LIBSWSCALE_LIBRARY OR NOT LIBAVUTIL_LIBRARY) message(FATAL_ERROR "Static FFmpeg (libavformat.a/libavcodec.a/libswscale.a/libavutil.a) not found under ${CMAKE_PREFIX_PATH}/lib. Rebuild the deps — FFMPEG builds static-only on macOS.") endif () target_link_libraries(libslic3r_gui ${LIBAVFORMAT_LIBRARY} ${LIBAVCODEC_LIBRARY} ${LIBSWSCALE_LIBRARY} ${LIBAVUTIL_LIBRARY}) target_include_directories(libslic3r_gui SYSTEM PRIVATE ${CMAKE_PREFIX_PATH}/include) elseif (WIN32) # Prebuilt shared FFmpeg from the deps install. Windows has no pkg-config, # so resolve the import libraries out of the deps prefix directly; the DLLs # are copied next to the executable by the top level CMakeLists. find_library(LIBAVFORMAT_LIBRARY NAMES avformat PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) find_library(LIBAVCODEC_LIBRARY NAMES avcodec PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) find_library(LIBSWSCALE_LIBRARY NAMES swscale PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) find_library(LIBAVUTIL_LIBRARY NAMES avutil PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) if (NOT LIBAVCODEC_LIBRARY OR NOT LIBSWSCALE_LIBRARY OR NOT LIBAVUTIL_LIBRARY) message(FATAL_ERROR "FFmpeg (avcodec/swscale/avutil) not found under ${CMAKE_PREFIX_PATH}/lib. Rebuild the deps.") endif () target_link_libraries(libslic3r_gui ${LIBAVFORMAT_LIBRARY} ${LIBAVCODEC_LIBRARY} ${LIBSWSCALE_LIBRARY} ${LIBAVUTIL_LIBRARY}) target_include_directories(libslic3r_gui SYSTEM PRIVATE ${CMAKE_PREFIX_PATH}/include) else () pkg_check_modules(LIBAV REQUIRED IMPORTED_TARGET libavformat libavcodec libswscale libavutil ) target_link_libraries(libslic3r_gui PkgConfig::LIBAV) endif() # We need to implement some hacks for wxWidgets and touch the underlying GTK # layer and sub-libraries. This forces us to use the include locations and # link these libraries. if (UNIX AND NOT APPLE) find_package(PkgConfig REQUIRED) find_package(GTK${SLIC3R_GTK} REQUIRED) pkg_check_modules(LIBSECRET REQUIRED libsecret-1) pkg_check_modules(webkit2gtk REQUIRED webkit2gtk-4.1) if (FLATPAK) # I don't know why this is needed, but for whatever reason slic3r isn't # linking to X11 and webkit2gtk. force it. find_package(X11 REQUIRED) target_link_libraries(libslic3r_gui ${X11_LIBRARIES} ${webkit2gtk_LIBRARIES}) endif() target_include_directories(libslic3r_gui SYSTEM PRIVATE ${GTK${SLIC3R_GTK}_INCLUDE_DIRS} ${LIBSECRET_INCLUDE_DIRS} ${webkit2gtk_INCLUDE_DIRS}) target_link_libraries(libslic3r_gui ${GTK${SLIC3R_GTK}_LIBRARIES} fontconfig ${LIBSECRET_LIBRARIES}) # Propagate GDK backend detection results as compile definitions so that # LinuxDisplayBackend.cpp can include the right GDK headers. if (wxHAVE_GDK_X11) target_compile_definitions(libslic3r_gui PRIVATE wxHAVE_GDK_X11) endif () if (wxHAVE_GDK_WAYLAND) target_compile_definitions(libslic3r_gui PRIVATE wxHAVE_GDK_WAYLAND) endif () endif () # Add a definition so that we can tell we are compiling slic3r. target_compile_definitions(libslic3r_gui PRIVATE SLIC3R_CURRENTLY_COMPILING_GUI_MODULE) if (ORCA_BUILD_PYTHON_STUBGEN_MODULE) add_library(orca_stubgen MODULE plugin/PythonPluginBridge.cpp ) target_compile_definitions(orca_stubgen PRIVATE ORCA_PYTHON_STUBGEN_MODULE ) target_include_directories(orca_stubgen PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} Utils ) target_link_libraries(orca_stubgen PRIVATE libslic3r_gui pybind11::embed ) set_target_properties(orca_stubgen PROPERTIES OUTPUT_NAME orca PREFIX "" ) endif()