Files
XCEngine/engine/CMakeLists.txt
ssdfasd a532cabf92 feat(RHI): 添加 RHIDescriptorPool 抽象类
- 新增 RHIDescriptorPool 抽象基类,定义描述符池统一接口
- D3D12DescriptorHeap 现在继承自 RHIDescriptorPool
- 添加 DescriptorPoolDesc 结构体,包含设备指针、类型、数量等信息
- 添加 Initialize(const DescriptorPoolDesc&) 统一初始化方法
2026-03-18 01:46:01 +08:00

190 lines
11 KiB
CMake

cmake_minimum_required(VERSION 3.15)
project(XCEngineLib)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_library(XCEngine STATIC
# Math
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Math.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Vector2.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Vector3.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Vector4.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Matrix3.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Matrix4.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Quaternion.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Transform.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Color.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Ray.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Plane.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Sphere.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Box.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Bounds.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Frustum.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Rect.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/AABB.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Matrix.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Quaternion.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Transform.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Color.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Geometry.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Math/FrustumBounds.cpp
# Containers
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Containers/Containers.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Containers/Array.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Containers/String.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Containers/HashMap.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Containers/String.cpp
# Memory
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/Allocator.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/LinearAllocator.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/PoolAllocator.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/ProxyAllocator.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/MemoryManager.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Memory/Memory.cpp
# Threading
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/Threading.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/Mutex.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/SpinLock.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/ReadWriteLock.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/Thread.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/Task.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/LambdaTask.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/TaskGroup.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/TaskSystemConfig.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/TaskSystem.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Threading/Thread.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Threading/TaskGroup.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Threading/TaskSystem.cpp
# Core
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Core/FileWriter.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Core/FileWriter.cpp
# Debug
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/Debug.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/LogLevel.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/LogCategory.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/LogEntry.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/ILogSink.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/ConsoleLogSink.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/FileLogSink.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/Logger.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/Profiler.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/LogLevel.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/LogCategory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/ConsoleLogSink.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/FileLogSink.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/Logger.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/Profiler.cpp
# RHI
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/RHIEnums.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/RHIFactory.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/RHIDescriptorPool.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Enum.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Device.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12CommandQueue.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12CommandAllocator.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12CommandList.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12DescriptorHeap.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Buffer.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12PipelineState.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Sampler.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Shader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Texture.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12RootSignature.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12SwapChain.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Fence.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Screenshot.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12RenderTargetView.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12DepthStencilView.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12ShaderResourceView.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12ConstantBufferView.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12QueryHeap.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12UnorderedAccessView.h
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Device.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12CommandQueue.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12CommandAllocator.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12CommandList.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12DescriptorHeap.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Buffer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12PipelineState.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Sampler.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Shader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Texture.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12RootSignature.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12SwapChain.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Fence.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Screenshot.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12RenderTargetView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12DepthStencilView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12ShaderResourceView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12ConstantBufferView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12QueryHeap.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12UnorderedAccessView.cpp
# RHI Factory
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/RHIFactory.cpp
# Resources
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Resources.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceTypes.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/IResource.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceHandle.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/IResourceLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceManager.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceCache.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/AsyncLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Texture.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Mesh.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/TextureLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/MeshLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Material.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/MaterialLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Shader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ShaderLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/AudioClip.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/AudioLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceFileSystem.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/FileArchive.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceCache.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/AsyncLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceTypes.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/IResourceLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Texture.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Mesh.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/TextureLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/MeshLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Material.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/MaterialLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Shader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ShaderLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/AudioClip.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/AudioLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceFileSystem.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/FileArchive.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourcePackage.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceDependencyGraph.cpp
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourcePackage.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceDependencyGraph.h
)
target_include_directories(XCEngine PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/tests/OpenGL/package/include
)
if(MSVC)
target_compile_options(XCEngine PRIVATE /W3)
else()
target_compile_options(XCEngine PRIVATE -Wall)
endif()