427 lines
14 KiB
CMake
427 lines
14 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
project(XCUIEditor VERSION 0.1 LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
file(TO_CMAKE_PATH "${CMAKE_SOURCE_DIR}" XCUIEDITOR_REPO_ROOT_PATH)
|
|
|
|
function(xcui_editor_apply_common_target_settings target visibility)
|
|
target_compile_definitions(${target} ${visibility}
|
|
UNICODE
|
|
_UNICODE
|
|
)
|
|
|
|
if(MSVC)
|
|
target_compile_options(${target} PRIVATE /utf-8 /FS)
|
|
set_property(TARGET ${target} PROPERTY
|
|
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
|
endif()
|
|
endfunction()
|
|
|
|
set(XCUI_EDITOR_FOUNDATION_SOURCES
|
|
src/Foundation/UIEditorCommandDispatcher.cpp
|
|
src/Foundation/UIEditorCommandRegistry.cpp
|
|
src/Foundation/UIEditorRuntimeTrace.cpp
|
|
src/Foundation/UIEditorShortcutManager.cpp
|
|
src/Foundation/UIEditorTheme.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_FIELD_SOURCES
|
|
src/Fields/UIEditorAssetField.cpp
|
|
src/Fields/UIEditorAssetFieldInteraction.cpp
|
|
src/Fields/UIEditorBoolField.cpp
|
|
src/Fields/UIEditorBoolFieldInteraction.cpp
|
|
src/Fields/UIEditorColorField.cpp
|
|
src/Fields/UIEditorColorFieldInteraction.cpp
|
|
src/Fields/ColorFieldRendering.cpp
|
|
src/Fields/UIEditorEnumField.cpp
|
|
src/Fields/UIEditorEnumFieldInteraction.cpp
|
|
src/Fields/UIEditorFieldStyle.cpp
|
|
src/Fields/UIEditorNumberField.cpp
|
|
src/Fields/UIEditorNumberFieldInteraction.cpp
|
|
src/Fields/UIEditorObjectField.cpp
|
|
src/Fields/UIEditorObjectFieldInteraction.cpp
|
|
src/Fields/UIEditorPropertyGrid.cpp
|
|
src/Fields/UIEditorPropertyGridInteraction.cpp
|
|
src/Fields/PropertyGridInteractionAsset.cpp
|
|
src/Fields/PropertyGridInteractionColor.cpp
|
|
src/Fields/PropertyGridInteractionEdit.cpp
|
|
src/Fields/PropertyGridInteractionHelpers.cpp
|
|
src/Fields/PropertyGridInteractionPopup.cpp
|
|
src/Fields/PropertyGridInteractionVector.cpp
|
|
src/Fields/PropertyGridRendering.cpp
|
|
src/Fields/UIEditorTextField.cpp
|
|
src/Fields/UIEditorTextFieldInteraction.cpp
|
|
src/Fields/UIEditorVector2Field.cpp
|
|
src/Fields/UIEditorVector2FieldInteraction.cpp
|
|
src/Fields/UIEditorVector3Field.cpp
|
|
src/Fields/UIEditorVector3FieldInteraction.cpp
|
|
src/Fields/UIEditorVector4Field.cpp
|
|
src/Fields/UIEditorVector4FieldInteraction.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_COLLECTION_SOURCES
|
|
src/Collections/UIEditorInlineRenameSession.cpp
|
|
src/Collections/UIEditorListView.cpp
|
|
src/Collections/UIEditorListViewInteraction.cpp
|
|
src/Collections/UIEditorScrollView.cpp
|
|
src/Collections/UIEditorScrollViewInteraction.cpp
|
|
src/Collections/UIEditorTabStrip.cpp
|
|
src/Collections/UIEditorTabStripInteraction.cpp
|
|
src/Collections/UIEditorTreeView.cpp
|
|
src/Collections/UIEditorTreeViewInteraction.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_DOCKING_SOURCES
|
|
src/Docking/DockHostMeasure.cpp
|
|
src/Docking/UIEditorDockHost.cpp
|
|
src/Docking/DockHostHitTest.cpp
|
|
src/Docking/DockHostRendering.cpp
|
|
src/Docking/UIEditorDockHostInteraction.cpp
|
|
src/Docking/DockHostInteractionHelpers.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_MENU_SOURCES
|
|
src/Menu/UIEditorMenuBar.cpp
|
|
src/Menu/UIEditorMenuModel.cpp
|
|
src/Menu/UIEditorMenuPopup.cpp
|
|
src/Menu/UIEditorMenuSession.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_PANEL_SOURCES
|
|
src/Panels/UIEditorPanelContentHost.cpp
|
|
src/Panels/UIEditorPanelFrame.cpp
|
|
src/Panels/UIEditorPanelHostLifecycle.cpp
|
|
src/Panels/UIEditorPanelRegistry.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_SHELL_SOURCES
|
|
src/Shell/UIEditorShellAsset.cpp
|
|
src/Shell/UIEditorShellCapturePolicy.cpp
|
|
src/Shell/UIEditorShellCompose.cpp
|
|
src/Shell/UIEditorShellInteraction.cpp
|
|
src/Shell/ShellInteractionRequest.cpp
|
|
src/Shell/ShellInteractionRendering.cpp
|
|
src/Shell/UIEditorStatusBar.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_VIEWPORT_SOURCES
|
|
src/Viewport/UIEditorViewportInputBridge.cpp
|
|
src/Viewport/UIEditorViewportShell.cpp
|
|
src/Viewport/UIEditorViewportSlot.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_WORKSPACE_SOURCES
|
|
src/Workspace/UIEditorWorkspaceCompose.cpp
|
|
src/Workspace/UIEditorWorkspaceController.cpp
|
|
src/Workspace/WorkspaceControllerDispatch.cpp
|
|
src/Workspace/WorkspaceControllerLayoutOps.cpp
|
|
src/Workspace/UIEditorWorkspaceInteraction.cpp
|
|
src/Workspace/UIEditorWorkspaceLayoutPersistence.cpp
|
|
src/Workspace/UIEditorWorkspaceModel.cpp
|
|
src/Workspace/WorkspaceModelMutation.cpp
|
|
src/Workspace/WorkspaceModelQueries.cpp
|
|
src/Workspace/SplitterDragCorrection/Chain.cpp
|
|
src/Workspace/SplitterDragCorrection/Correction.cpp
|
|
src/Workspace/WorkspaceModelValidation.cpp
|
|
src/Workspace/UIEditorWorkspaceSession.cpp
|
|
src/Workspace/UIEditorWorkspaceTransfer.cpp
|
|
src/Workspace/UIEditorWindowWorkspaceController.cpp
|
|
src/Workspace/UIEditorWindowWorkspaceModel.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_WIDGET_SUPPORT_SOURCES
|
|
src/Widgets/UIEditorCollectionPrimitives.cpp
|
|
src/Widgets/UIEditorColorUtils.cpp
|
|
src/Widgets/UIEditorFieldRowLayout.cpp
|
|
)
|
|
|
|
add_library(XCUIEditorLib STATIC
|
|
${XCUI_EDITOR_FOUNDATION_SOURCES}
|
|
${XCUI_EDITOR_FIELD_SOURCES}
|
|
${XCUI_EDITOR_COLLECTION_SOURCES}
|
|
${XCUI_EDITOR_DOCKING_SOURCES}
|
|
${XCUI_EDITOR_MENU_SOURCES}
|
|
${XCUI_EDITOR_PANEL_SOURCES}
|
|
${XCUI_EDITOR_SHELL_SOURCES}
|
|
${XCUI_EDITOR_VIEWPORT_SOURCES}
|
|
${XCUI_EDITOR_WORKSPACE_SOURCES}
|
|
${XCUI_EDITOR_WIDGET_SUPPORT_SOURCES}
|
|
)
|
|
|
|
target_include_directories(XCUIEditorLib
|
|
PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${CMAKE_SOURCE_DIR}/engine/include
|
|
PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
)
|
|
|
|
target_compile_definitions(XCUIEditorLib PUBLIC
|
|
XCUIEDITOR_REPO_ROOT="${XCUIEDITOR_REPO_ROOT_PATH}"
|
|
)
|
|
|
|
xcui_editor_apply_common_target_settings(XCUIEditorLib PUBLIC)
|
|
|
|
target_link_libraries(XCUIEditorLib PRIVATE
|
|
XCEngine
|
|
)
|
|
|
|
set(XCUI_EDITOR_HOST_PLATFORM_SOURCES
|
|
app/Platform/Win32/BorderlessWindowChrome.cpp
|
|
app/Platform/Win32/BorderlessWindowChromeRendering.cpp
|
|
app/Platform/Win32/BorderlessWindowChromeDwm.cpp
|
|
app/Platform/Win32/BorderlessWindowFrame.cpp
|
|
app/Platform/Win32/WindowMessageDispatcher.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_HOST_RENDERING_SOURCES
|
|
app/Rendering/Native/AutoScreenshot.cpp
|
|
app/Rendering/D3D12/D3D12HostDeviceFence.cpp
|
|
app/Rendering/D3D12/D3D12HostDeviceFrame.cpp
|
|
app/Rendering/D3D12/D3D12HostDeviceLifecycle.cpp
|
|
app/Rendering/D3D12/D3D12ShaderResourceDescriptorAllocator.cpp
|
|
app/Rendering/D3D12/D3D12WindowInteropContext.cpp
|
|
app/Rendering/D3D12/D3D12WindowInteropDevice.cpp
|
|
app/Rendering/D3D12/D3D12WindowInteropResources.cpp
|
|
app/Rendering/D3D12/D3D12WindowInteropSourceTextures.cpp
|
|
app/Rendering/D3D12/D3D12WindowRenderer.cpp
|
|
app/Rendering/D3D12/SwapChainPresenter/BackBuffers.cpp
|
|
app/Rendering/D3D12/SwapChainPresenter/Lifecycle.cpp
|
|
app/Rendering/D3D12/SwapChainPresenter/Presentation.cpp
|
|
app/Rendering/D3D12/SwapChainPresenter/Resize.cpp
|
|
app/Rendering/D3D12/D3D12WindowRenderLoop.cpp
|
|
app/Rendering/Native/NativeRendererCapture.cpp
|
|
app/Rendering/Native/NativeRendererDraw.cpp
|
|
app/Rendering/Native/NativeRendererDrawContent.cpp
|
|
app/Rendering/Native/NativeRendererDrawGeometry.cpp
|
|
app/Rendering/Native/NativeRendererLifecycle.cpp
|
|
app/Rendering/Native/NativeRendererRenderTarget.cpp
|
|
app/Rendering/Native/NativeRendererRendering.cpp
|
|
app/Rendering/Native/NativeRendererText.cpp
|
|
app/Rendering/Native/NativeRendererTextureDecoding.cpp
|
|
app/Rendering/Native/NativeRendererTextures.cpp
|
|
app/Rendering/Native/NativeRendererWindowInterop.cpp
|
|
)
|
|
|
|
add_library(XCUIEditorHost STATIC
|
|
${XCUI_EDITOR_HOST_PLATFORM_SOURCES}
|
|
${XCUI_EDITOR_HOST_RENDERING_SOURCES}
|
|
)
|
|
|
|
target_include_directories(XCUIEditorHost
|
|
PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/app
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${CMAKE_SOURCE_DIR}/engine/include
|
|
)
|
|
|
|
xcui_editor_apply_common_target_settings(XCUIEditorHost PRIVATE)
|
|
|
|
target_link_libraries(XCUIEditorHost PRIVATE
|
|
XCEngine
|
|
d2d1.lib
|
|
d3d11.lib
|
|
d3d12.lib
|
|
d3dcompiler.lib
|
|
dwrite.lib
|
|
dxgi.lib
|
|
windowscodecs.lib
|
|
)
|
|
|
|
if(XCENGINE_BUILD_XCUI_EDITOR_APP)
|
|
set(XCUI_EDITOR_APP_BOOTSTRAP_SOURCES
|
|
app/Bootstrap/EditorApp.rc
|
|
app/main.cpp
|
|
app/Bootstrap/ApplicationBootstrap.cpp
|
|
app/Bootstrap/ApplicationBootstrapInternal.cpp
|
|
app/Bootstrap/ApplicationLifecycle.cpp
|
|
app/Bootstrap/ApplicationRunLoop.cpp
|
|
app/Bootstrap/ApplicationWindowClass.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_APP_STATE_SOURCES
|
|
app/State/EditorContext.cpp
|
|
app/State/EditorContextStatus.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_APP_COMPOSITION_SOURCES
|
|
app/Composition/EditorShellAssetBuilder.cpp
|
|
app/Composition/EditorShellAssetCommands.cpp
|
|
app/Composition/EditorShellAssetDefinition.cpp
|
|
app/Composition/EditorShellAssetLayout.cpp
|
|
app/Composition/EditorShellAssetMenu.cpp
|
|
app/Composition/EditorShellRuntime.cpp
|
|
app/Composition/EditorShellRuntimeRendering.cpp
|
|
app/Composition/EditorShellRuntimeUpdate.cpp
|
|
app/Composition/EditorShellRuntimeViewport.cpp
|
|
app/Composition/WorkspaceEventSync.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_APP_FEATURE_SOURCES
|
|
app/Features/Console/ConsolePanel.cpp
|
|
app/Features/Hierarchy/HierarchyModel.cpp
|
|
app/Features/Hierarchy/HierarchyPanel.cpp
|
|
app/Features/Hierarchy/HierarchyPanelInternal.cpp
|
|
app/Features/Inspector/InspectorPanel.cpp
|
|
app/Features/Inspector/InspectorPresentationModel.cpp
|
|
app/Features/Inspector/InspectorSubject.cpp
|
|
app/Features/Inspector/Components/InspectorComponentEditorRegistry.cpp
|
|
app/Features/Inspector/Components/TransformInspectorComponentEditor.cpp
|
|
app/Features/Project/ProjectPanel.cpp
|
|
app/Features/Project/ProjectPanelInternal.cpp
|
|
app/Features/Project/ProjectBrowserModel.cpp
|
|
app/Features/Project/ProjectBrowserModelAssets.cpp
|
|
app/Features/Project/ProjectBrowserModelFolders.cpp
|
|
app/Features/Project/ProjectBrowserModelInternal.cpp
|
|
app/Features/Scene/LegacySceneViewportGizmo.cpp
|
|
app/Legacy/Viewport/LegacySceneViewportGizmoSupport.cpp
|
|
app/Features/Scene/SceneEditCommandRoute.cpp
|
|
app/Features/Scene/SceneViewportToolOverlay.cpp
|
|
app/Features/Scene/SceneViewportController.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_APP_RENDERING_SOURCES
|
|
app/Rendering/Assets/BuiltInIcons.cpp
|
|
app/Rendering/Viewport/Passes/SceneViewportGridPass.cpp
|
|
app/Rendering/Viewport/Passes/SceneViewportSelectionOutlinePass.cpp
|
|
app/Rendering/Viewport/SceneViewportRenderPassBundle.cpp
|
|
app/Rendering/Viewport/ViewportHostService.cpp
|
|
app/Rendering/Viewport/ViewportRenderTargets.cpp
|
|
app/Rendering/Viewport/ViewportRenderTargetInternal.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_APP_SUPPORT_SOURCES
|
|
app/Project/EditorProjectRuntime.cpp
|
|
app/Scene/EditorSceneRuntime.cpp
|
|
app/Internal/EmbeddedPngLoader.cpp
|
|
app/Scene/EditorSceneBridge.cpp
|
|
src/App/EditorHostCommandBridge.cpp
|
|
src/App/EditorSession.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_APP_PLATFORM_SOURCES
|
|
app/Platform/Win32/EditorWindowBorderlessPlacement.cpp
|
|
app/Platform/Win32/EditorWindowBorderlessResize.cpp
|
|
app/Platform/Win32/EditorWindowFrame.cpp
|
|
app/Platform/Win32/EditorWindowLifecycle.cpp
|
|
app/Platform/Win32/EditorWindowInput.cpp
|
|
app/Platform/Win32/EditorWindowTitleBarInteraction.cpp
|
|
app/Platform/Win32/EditorWindowTitleBarRendering.cpp
|
|
app/Platform/Win32/WindowManager/Lifecycle.cpp
|
|
app/Platform/Win32/WindowManager/WindowSync.cpp
|
|
app/Platform/Win32/WindowManager/TabDrag.cpp
|
|
)
|
|
|
|
set(XCUI_EDITOR_APP_CORE_SOURCES
|
|
${XCUI_EDITOR_APP_STATE_SOURCES}
|
|
${XCUI_EDITOR_APP_COMPOSITION_SOURCES}
|
|
${XCUI_EDITOR_APP_FEATURE_SOURCES}
|
|
${XCUI_EDITOR_APP_RENDERING_SOURCES}
|
|
${XCUI_EDITOR_APP_SUPPORT_SOURCES}
|
|
)
|
|
|
|
add_library(XCUIEditorAppCore STATIC
|
|
${XCUI_EDITOR_APP_CORE_SOURCES}
|
|
)
|
|
|
|
target_include_directories(XCUIEditorAppCore PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/app
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${CMAKE_SOURCE_DIR}/engine/include
|
|
)
|
|
|
|
target_compile_definitions(XCUIEditorAppCore PRIVATE
|
|
XCUIEDITOR_REPO_ROOT="${XCUIEDITOR_REPO_ROOT_PATH}"
|
|
)
|
|
|
|
xcui_editor_apply_common_target_settings(XCUIEditorAppCore PRIVATE)
|
|
|
|
target_link_libraries(XCUIEditorAppCore PRIVATE
|
|
XCUIEditorLib
|
|
XCUIEditorHost
|
|
)
|
|
|
|
add_library(XCUIEditorAppLib STATIC
|
|
${XCUI_EDITOR_APP_PLATFORM_SOURCES}
|
|
)
|
|
|
|
target_include_directories(XCUIEditorAppLib PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/app
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${CMAKE_SOURCE_DIR}/engine/include
|
|
)
|
|
|
|
target_compile_definitions(XCUIEditorAppLib PRIVATE
|
|
XCUIEDITOR_REPO_ROOT="${XCUIEDITOR_REPO_ROOT_PATH}"
|
|
)
|
|
|
|
xcui_editor_apply_common_target_settings(XCUIEditorAppLib PRIVATE)
|
|
|
|
target_link_libraries(XCUIEditorAppLib PRIVATE
|
|
XCUIEditorAppCore
|
|
XCUIEditorLib
|
|
XCUIEditorHost
|
|
)
|
|
|
|
add_executable(XCUIEditorApp WIN32
|
|
${XCUI_EDITOR_APP_BOOTSTRAP_SOURCES}
|
|
)
|
|
|
|
target_include_directories(XCUIEditorApp PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/app
|
|
)
|
|
|
|
target_compile_definitions(XCUIEditorApp PRIVATE
|
|
XCUIEDITOR_REPO_ROOT="${XCUIEDITOR_REPO_ROOT_PATH}"
|
|
)
|
|
|
|
xcui_editor_apply_common_target_settings(XCUIEditorApp PRIVATE)
|
|
|
|
target_link_libraries(XCUIEditorApp PRIVATE
|
|
XCUIEditorAppLib
|
|
XCUIEditorAppCore
|
|
XCUIEditorLib
|
|
XCUIEditorHost
|
|
d2d1.lib
|
|
d3d11.lib
|
|
d3d12.lib
|
|
d3dcompiler.lib
|
|
dwrite.lib
|
|
dxgi.lib
|
|
windowscodecs.lib
|
|
)
|
|
|
|
set_target_properties(XCUIEditorApp PROPERTIES
|
|
OUTPUT_NAME "XCUIEditor"
|
|
)
|
|
|
|
if(WIN32 AND EXISTS "${CMAKE_SOURCE_DIR}/engine/third_party/assimp/bin/assimp-vc143-mt.dll")
|
|
add_custom_command(TARGET XCUIEditorApp POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
${CMAKE_SOURCE_DIR}/engine/third_party/assimp/bin/assimp-vc143-mt.dll
|
|
$<TARGET_FILE_DIR:XCUIEditorApp>/assimp-vc143-mt.dll
|
|
)
|
|
endif()
|
|
|
|
if(WIN32 AND XCENGINE_ENABLE_PHYSX)
|
|
xcengine_copy_physx_runtime_dlls(XCUIEditorApp)
|
|
endif()
|
|
|
|
add_test(
|
|
NAME xcui_editor_app_smoke
|
|
COMMAND $<TARGET_FILE:XCUIEditorApp>
|
|
)
|
|
set_tests_properties(xcui_editor_app_smoke PROPERTIES
|
|
TIMEOUT 20
|
|
RUN_SERIAL TRUE
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
ENVIRONMENT
|
|
"XCUIEDITOR_SMOKE_TEST=1;XCUIEDITOR_SMOKE_TEST_FRAME_LIMIT=4;XCUI_AUTO_CAPTURE_ON_STARTUP=0"
|
|
)
|
|
endif()
|
|
|
|
|
|
|