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/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 # OpenGL RHI ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLDevice.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLShader.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLBuffer.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLVertexArray.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLTexture.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLPipelineState.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLCommandList.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLSwapChain.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLFence.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLSampler.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLRenderTargetView.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLDepthStencilView.h ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLDevice.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLShader.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLBuffer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLVertexArray.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLTexture.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLPipelineState.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLCommandList.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLSwapChain.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLFence.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLSampler.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLRenderTargetView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLDepthStencilView.cpp ) 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()