Convert SHADE_Engine to a DLL and made all projects use a shared output and intermediate directory #14

Merged
Pycorax merged 6 commits from UseSharedOutInterDirs into main 2022-09-14 19:40:50 +08:00
17 changed files with 139 additions and 69 deletions

View File

@ -15,8 +15,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msdfgen", "Dependencies\msd
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reactphysics3d", "Dependencies\reactphysics3d\reactphysics3d.vcxproj", "{2ECAB41A-1A98-A820-032C-1947EF988485}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reactphysics3d", "Dependencies\reactphysics3d\reactphysics3d.vcxproj", "{2ECAB41A-1A98-A820-032C-1947EF988485}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spdlog", "Dependencies\spdlog\spdlog.vcxproj", "{8EAD431C-7A4F-6EF2-630A-82464F4BF542}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml-cpp", "Dependencies\yamlcpp\yaml-cpp.vcxproj", "{88F1A057-74BE-FB62-9DD7-E90A890331F1}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml-cpp", "Dependencies\yamlcpp\yaml-cpp.vcxproj", "{88F1A057-74BE-FB62-9DD7-E90A890331F1}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SHADE_Engine", "SHADE_Engine\SHADE_Engine.vcxproj", "{3F92E998-2BF5-783D-D47A-B1F3C0BC44C0}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SHADE_Engine", "SHADE_Engine\SHADE_Engine.vcxproj", "{3F92E998-2BF5-783D-D47A-B1F3C0BC44C0}"
@ -26,7 +24,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SHADE_Engine", "SHADE_Engin
{38BD587B-248B-4C81-0D1F-BDA7F98B28E6} = {38BD587B-248B-4C81-0D1F-BDA7F98B28E6} {38BD587B-248B-4C81-0D1F-BDA7F98B28E6} = {38BD587B-248B-4C81-0D1F-BDA7F98B28E6}
{2ECAB41A-1A98-A820-032C-1947EF988485} = {2ECAB41A-1A98-A820-032C-1947EF988485} {2ECAB41A-1A98-A820-032C-1947EF988485} = {2ECAB41A-1A98-A820-032C-1947EF988485}
{C0FF640D-2C14-8DBE-F595-301E616989EF} = {C0FF640D-2C14-8DBE-F595-301E616989EF} {C0FF640D-2C14-8DBE-F595-301E616989EF} = {C0FF640D-2C14-8DBE-F595-301E616989EF}
{8EAD431C-7A4F-6EF2-630A-82464F4BF542} = {8EAD431C-7A4F-6EF2-630A-82464F4BF542}
EndProjectSection EndProjectSection
EndProject EndProject
Global Global
@ -59,10 +56,6 @@ Global
{2ECAB41A-1A98-A820-032C-1947EF988485}.Debug|x64.Build.0 = Debug|x64 {2ECAB41A-1A98-A820-032C-1947EF988485}.Debug|x64.Build.0 = Debug|x64
{2ECAB41A-1A98-A820-032C-1947EF988485}.Release|x64.ActiveCfg = Release|x64 {2ECAB41A-1A98-A820-032C-1947EF988485}.Release|x64.ActiveCfg = Release|x64
{2ECAB41A-1A98-A820-032C-1947EF988485}.Release|x64.Build.0 = Release|x64 {2ECAB41A-1A98-A820-032C-1947EF988485}.Release|x64.Build.0 = Release|x64
{8EAD431C-7A4F-6EF2-630A-82464F4BF542}.Debug|x64.ActiveCfg = Debug|x64
{8EAD431C-7A4F-6EF2-630A-82464F4BF542}.Debug|x64.Build.0 = Debug|x64
{8EAD431C-7A4F-6EF2-630A-82464F4BF542}.Release|x64.ActiveCfg = Release|x64
{8EAD431C-7A4F-6EF2-630A-82464F4BF542}.Release|x64.Build.0 = Release|x64
{88F1A057-74BE-FB62-9DD7-E90A890331F1}.Debug|x64.ActiveCfg = Debug|x64 {88F1A057-74BE-FB62-9DD7-E90A890331F1}.Debug|x64.ActiveCfg = Debug|x64
{88F1A057-74BE-FB62-9DD7-E90A890331F1}.Debug|x64.Build.0 = Debug|x64 {88F1A057-74BE-FB62-9DD7-E90A890331F1}.Debug|x64.Build.0 = Debug|x64
{88F1A057-74BE-FB62-9DD7-E90A890331F1}.Release|x64.ActiveCfg = Release|x64 {88F1A057-74BE-FB62-9DD7-E90A890331F1}.Release|x64.ActiveCfg = Release|x64
@ -81,7 +74,6 @@ Global
{38BD587B-248B-4C81-0D1F-BDA7F98B28E6} = {53E47842-3FC8-3998-A828-34EB942B241A} {38BD587B-248B-4C81-0D1F-BDA7F98B28E6} = {53E47842-3FC8-3998-A828-34EB942B241A}
{8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA} = {53E47842-3FC8-3998-A828-34EB942B241A} {8900D8DD-F5DF-5679-FEF7-E14F6A56BDDA} = {53E47842-3FC8-3998-A828-34EB942B241A}
{2ECAB41A-1A98-A820-032C-1947EF988485} = {53E47842-3FC8-3998-A828-34EB942B241A} {2ECAB41A-1A98-A820-032C-1947EF988485} = {53E47842-3FC8-3998-A828-34EB942B241A}
{8EAD431C-7A4F-6EF2-630A-82464F4BF542} = {53E47842-3FC8-3998-A828-34EB942B241A}
{88F1A057-74BE-FB62-9DD7-E90A890331F1} = {53E47842-3FC8-3998-A828-34EB942B241A} {88F1A057-74BE-FB62-9DD7-E90A890331F1} = {53E47842-3FC8-3998-A828-34EB942B241A}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

View File

@ -42,15 +42,15 @@
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<OutDir>bin\Debug_x86_64\SHADE_Application\</OutDir> <OutDir>..\bin\Debug\</OutDir>
<IntDir>bin-int\Debug_x86_64\SHADE_Application\</IntDir> <IntDir>..\bin_int\Debug\SHADE_Application\</IntDir>
<TargetName>SHADE_Application</TargetName> <TargetName>SHADE_Application</TargetName>
<TargetExt>.exe</TargetExt> <TargetExt>.exe</TargetExt>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<OutDir>bin\Release_x86_64\SHADE_Application\</OutDir> <OutDir>..\bin\Release\</OutDir>
<IntDir>bin-int\Release_x86_64\SHADE_Application\</IntDir> <IntDir>..\bin_int\Release\SHADE_Application\</IntDir>
<TargetName>SHADE_Application</TargetName> <TargetName>SHADE_Application</TargetName>
<TargetExt>.exe</TargetExt> <TargetExt>.exe</TargetExt>
</PropertyGroup> </PropertyGroup>
@ -60,7 +60,7 @@
<PrecompiledHeaderFile>SBpch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>SBpch.h</PrecompiledHeaderFile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\Dependencies\spdlog\include;..\SHADE_Engine\src;src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\Dependencies\spdlog\include;..\SHADE_Engine\src;src;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
@ -71,6 +71,8 @@
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>spdlogd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\Dependencies\spdlog\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<EntryPointSymbol>wWinMainCRTStartup</EntryPointSymbol> <EntryPointSymbol>wWinMainCRTStartup</EntryPointSymbol>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@ -80,7 +82,7 @@
<PrecompiledHeaderFile>SBpch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>SBpch.h</PrecompiledHeaderFile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PreprocessorDefinitions>_RELEASE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_RELEASE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\Dependencies\spdlog\include;..\SHADE_Engine\src;src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\Dependencies\spdlog\include;..\SHADE_Engine\src;src;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
@ -94,6 +96,8 @@
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>spdlog.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\Dependencies\spdlog\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<EntryPointSymbol>wWinMainCRTStartup</EntryPointSymbol> <EntryPointSymbol>wWinMainCRTStartup</EntryPointSymbol>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>

View File

@ -2,8 +2,8 @@ project "SHADE_Application"
kind "WindowedApp" kind "WindowedApp"
language "C++" language "C++"
cppdialect "C++latest" cppdialect "C++latest"
targetdir ("bin/" .. outputdir .. "/%{prj.name}") targetdir (outputdir)
objdir ("bin-int/" .. outputdir .. "/%{prj.name}") objdir (interdir)
systemversion "latest" systemversion "latest"
pchheader "SBpch.h" pchheader "SBpch.h"
pchsource "%{prj.location}/src/SBpch.cpp" pchsource "%{prj.location}/src/SBpch.cpp"
@ -14,6 +14,7 @@ project "SHADE_Application"
files files
{ {
"%{prj.location}/src/**.h", "%{prj.location}/src/**.h",
"%{prj.location}/src/**.hpp",
"%{prj.location}/src/**.c", "%{prj.location}/src/**.c",
"%{prj.location}/src/**.cpp", "%{prj.location}/src/**.cpp",
"%{prj.location}/src/**.glsl", "%{prj.location}/src/**.glsl",
@ -23,7 +24,8 @@ project "SHADE_Application"
{ {
"%{IncludeDir.spdlog}/include", "%{IncludeDir.spdlog}/include",
"../SHADE_Engine/src", "../SHADE_Engine/src",
"src" "src",
"%{IncludeDir.dotnet}/include",
} }
flags flags
@ -33,7 +35,12 @@ project "SHADE_Application"
links links
{ {
"SHADE_Engine" "SHADE_Engine",
}
libdirs
{
"%{IncludeDir.spdlog}/lib",
} }
postbuildcommands postbuildcommands
@ -45,7 +52,9 @@ project "SHADE_Application"
filter "configurations:Debug" filter "configurations:Debug"
symbols "On" symbols "On"
defines {"_DEBUG"} defines {"_DEBUG"}
links{"spdlogd.lib"}
filter "configurations:Release" filter "configurations:Release"
optimize "On" optimize "On"
defines{"_RELEASE"} defines{"_RELEASE"}
links{"spdlog.lib"}

View File

@ -26,13 +26,15 @@ INT WINAPI wWinMain
) )
{ {
const SHADE::SHLogger::Config LOGGER_CONFIG{ .directoryPath = "./logs/" }; const SHADE::SHLogger::Config LOGGER_CONFIG{ .directoryPath = "./logs/" };
SHADE::SHLogger::Initialise(LOGGER_CONFIG); auto logger = SHADE::SHLogger::Initialise(LOGGER_CONFIG);
try try
{ {
#ifndef SHEDITOR #ifndef SHEDITOR
//ShowWindow(::GetConsoleWindow(), SW_HIDE); //ShowWindow(::GetConsoleWindow(), SW_HIDE);
#endif #endif
SHLOG_REGISTER(logger)
SHADE::SHEngine::Run<Sandbox::SBApplication>(hInstance, hPrevInstance, lpCmdLine, nCmdShow); SHADE::SHEngine::Run<Sandbox::SBApplication>(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

View File

@ -19,13 +19,13 @@
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
@ -41,23 +41,25 @@
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>bin\Debug_x86_64\SHADE_Engine\</OutDir> <LinkIncremental>true</LinkIncremental>
<IntDir>bin-int\Debug_x86_64\SHADE_Engine\</IntDir> <OutDir>..\bin\Debug\</OutDir>
<IntDir>..\bin_int\Debug\SHADE_Engine\</IntDir>
<TargetName>SHADE_Engine</TargetName> <TargetName>SHADE_Engine</TargetName>
<TargetExt>.lib</TargetExt> <TargetExt>.dll</TargetExt>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>bin\Release_x86_64\SHADE_Engine\</OutDir> <LinkIncremental>false</LinkIncremental>
<IntDir>bin-int\Release_x86_64\SHADE_Engine\</IntDir> <OutDir>..\bin\Release\</OutDir>
<IntDir>..\bin_int\Release\SHADE_Engine\</IntDir>
<TargetName>SHADE_Engine</TargetName> <TargetName>SHADE_Engine</TargetName>
<TargetExt>.lib</TargetExt> <TargetExt>.dll</TargetExt>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile> <ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>SHpch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>SHpch.h</PrecompiledHeaderFile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PreprocessorDefinitions>_LIB;_GLFW_INCLUDE_NONE;MSDFGEN_USE_CPP11;NOMINMAX;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_LIB;_GLFW_INCLUDE_NONE;MSDFGEN_USE_CPP11;NOMINMAX;SH_API_EXPORT;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>src;..\Dependencies\assimp\include;..\Dependencies\imgui;..\Dependencies\imguizmo;..\Dependencies\imnodes;..\Dependencies\msdf;..\Dependencies\msdf\msdfgen;..\Dependencies\spdlog\include;..\Dependencies\tracy;..\Dependencies\VMA\include;..\Dependencies\yamlcpp\include;..\Dependencies\ktx\include;..\Dependencies\RTTR\include;..\Dependencies\reactphysics3d\include;$(VULKAN_SDK)\include;$(VULKAN_SDK)\Source\SPIRV-Reflect;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>src;..\Dependencies\assimp\include;..\Dependencies\imgui;..\Dependencies\imguizmo;..\Dependencies\imnodes;..\Dependencies\msdf;..\Dependencies\msdf\msdfgen;..\Dependencies\spdlog\include;..\Dependencies\tracy;..\Dependencies\VMA\include;..\Dependencies\yamlcpp\include;..\Dependencies\ktx\include;..\Dependencies\RTTR\include;..\Dependencies\reactphysics3d\include;$(VULKAN_SDK)\include;$(VULKAN_SDK)\Source\SPIRV-Reflect;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@ -69,18 +71,20 @@
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
<Lib>
<AdditionalDependencies>vulkan-1.lib;shaderc_shared.lib;assimp-vc142-mtd.lib;ktxd.lib;librttr_core_d.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>vulkan-1.lib;shaderc_shared.lib;assimp-vc142-mtd.lib;ktxd.lib;librttr_core_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>libs;$(VULKAN_SDK)\Lib;..\Dependencies\assimp\lib\Debug;..\Dependencies\assimp\lib\Release;..\Dependencies\RTTR\lib;..\Dependencies\ktx\lib\Debug;..\Dependencies\ktx\lib\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>libs;$(VULKAN_SDK)\Lib;..\Dependencies\assimp\lib\Debug;..\Dependencies\assimp\lib\Release;..\Dependencies\RTTR\lib;..\Dependencies\ktx\lib\Debug;..\Dependencies\ktx\lib\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Lib> <ImportLibrary>..\bin\Debug\SHADE_Engine.lib</ImportLibrary>
</Link>
<PostBuildEvent>
<Command>xcopy /s /r /y /q "$(SolutionDir)/Dependencies/spdlog/bin" "$(OutDir)"</Command>
</PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile> <ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>SHpch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>SHpch.h</PrecompiledHeaderFile>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<PreprocessorDefinitions>_LIB;_GLFW_INCLUDE_NONE;MSDFGEN_USE_CPP11;NOMINMAX;_RELEASE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_LIB;_GLFW_INCLUDE_NONE;MSDFGEN_USE_CPP11;NOMINMAX;SH_API_EXPORT;_RELEASE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>src;..\Dependencies\assimp\include;..\Dependencies\imgui;..\Dependencies\imguizmo;..\Dependencies\imnodes;..\Dependencies\msdf;..\Dependencies\msdf\msdfgen;..\Dependencies\spdlog\include;..\Dependencies\tracy;..\Dependencies\VMA\include;..\Dependencies\yamlcpp\include;..\Dependencies\ktx\include;..\Dependencies\RTTR\include;..\Dependencies\reactphysics3d\include;$(VULKAN_SDK)\include;$(VULKAN_SDK)\Source\SPIRV-Reflect;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>src;..\Dependencies\assimp\include;..\Dependencies\imgui;..\Dependencies\imguizmo;..\Dependencies\imnodes;..\Dependencies\msdf;..\Dependencies\msdf\msdfgen;..\Dependencies\spdlog\include;..\Dependencies\tracy;..\Dependencies\VMA\include;..\Dependencies\yamlcpp\include;..\Dependencies\ktx\include;..\Dependencies\RTTR\include;..\Dependencies\reactphysics3d\include;$(VULKAN_SDK)\include;$(VULKAN_SDK)\Source\SPIRV-Reflect;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
@ -95,11 +99,13 @@
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
</Link>
<Lib>
<AdditionalDependencies>vulkan-1.lib;shaderc_shared.lib;assimp-vc142-mt.lib;ktx.lib;librttr_core.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>vulkan-1.lib;shaderc_shared.lib;assimp-vc142-mt.lib;ktx.lib;librttr_core.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>libs;$(VULKAN_SDK)\Lib;..\Dependencies\assimp\lib\Debug;..\Dependencies\assimp\lib\Release;..\Dependencies\RTTR\lib;..\Dependencies\ktx\lib\Debug;..\Dependencies\ktx\lib\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>libs;$(VULKAN_SDK)\Lib;..\Dependencies\assimp\lib\Debug;..\Dependencies\assimp\lib\Release;..\Dependencies\RTTR\lib;..\Dependencies\ktx\lib\Debug;..\Dependencies\ktx\lib\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Lib> <ImportLibrary>..\bin\Release\SHADE_Engine.lib</ImportLibrary>
</Link>
<PostBuildEvent>
<Command>xcopy /s /r /y /q "$(SolutionDir)/Dependencies/spdlog/bin" "$(OutDir)"</Command>
</PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="src\ECS_Base\Components\SHComponent.h" /> <ClInclude Include="src\ECS_Base\Components\SHComponent.h" />
@ -184,6 +190,7 @@
<ClInclude Include="src\Resource\Handle.h" /> <ClInclude Include="src\Resource\Handle.h" />
<ClInclude Include="src\Resource\ResourceLibrary.h" /> <ClInclude Include="src\Resource\ResourceLibrary.h" />
<ClInclude Include="src\Resource\SparseSet.h" /> <ClInclude Include="src\Resource\SparseSet.h" />
<ClInclude Include="src\SH_API.h" />
<ClInclude Include="src\SHpch.h" /> <ClInclude Include="src\SHpch.h" />
<ClInclude Include="src\Scene\SHScene.h" /> <ClInclude Include="src\Scene\SHScene.h" />
<ClInclude Include="src\Scene\SHSceneGraph.h" /> <ClInclude Include="src\Scene\SHSceneGraph.h" />
@ -280,9 +287,6 @@
<ProjectReference Include="..\Dependencies\imgui\ImGui.vcxproj"> <ProjectReference Include="..\Dependencies\imgui\ImGui.vcxproj">
<Project>{C0FF640D-2C14-8DBE-F595-301E616989EF}</Project> <Project>{C0FF640D-2C14-8DBE-F595-301E616989EF}</Project>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\Dependencies\spdlog\spdlog.vcxproj">
<Project>{8EAD431C-7A4F-6EF2-630A-82464F4BF542}</Project>
</ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">

View File

@ -360,6 +360,7 @@
<ClInclude Include="src\Resource\SparseSet.h"> <ClInclude Include="src\Resource\SparseSet.h">
<Filter>Resource</Filter> <Filter>Resource</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SH_API.h" />
<ClInclude Include="src\SHpch.h" /> <ClInclude Include="src\SHpch.h" />
<ClInclude Include="src\Scene\SHScene.h"> <ClInclude Include="src\Scene\SHScene.h">
<Filter>Scene</Filter> <Filter>Scene</Filter>

View File

@ -1,9 +1,9 @@
project "SHADE_Engine" project "SHADE_Engine"
kind "StaticLib" kind "SharedLib"
language "C++" language "C++"
cppdialect "C++latest" cppdialect "C++latest"
targetdir ("bin/" .. outputdir .. "/%{prj.name}") targetdir (outputdir)
objdir ("bin-int/" .. outputdir .. "/%{prj.name}") objdir (interdir)
systemversion "latest" systemversion "latest"
pchheader "SHpch.h" pchheader "SHpch.h"
pchsource "%{prj.location}/src/SHpch.cpp" pchsource "%{prj.location}/src/SHpch.cpp"
@ -35,7 +35,7 @@ project "SHADE_Engine"
"%{IncludeDir.RTTR}/include", "%{IncludeDir.RTTR}/include",
"%{IncludeDir.reactphysics3d}/include", "%{IncludeDir.reactphysics3d}/include",
"%{IncludeDir.VULKAN}/include", "%{IncludeDir.VULKAN}/include",
"%{IncludeDir.VULKAN}/Source/SPIRV-Reflect" "%{IncludeDir.VULKAN}/Source/SPIRV-Reflect"
} }
libdirs libdirs
@ -56,7 +56,6 @@ project "SHADE_Engine"
"msdf-atlas-gen", "msdf-atlas-gen",
"reactphysics3d", "reactphysics3d",
"imgui", "imgui",
"spdlog",
"vulkan-1.lib", "vulkan-1.lib",
"shaderc_shared.lib" "shaderc_shared.lib"
} }
@ -66,7 +65,8 @@ project "SHADE_Engine"
"_LIB", "_LIB",
"_GLFW_INCLUDE_NONE", "_GLFW_INCLUDE_NONE",
"MSDFGEN_USE_CPP11", "MSDFGEN_USE_CPP11",
"NOMINMAX" "NOMINMAX",
"SH_API_EXPORT"
} }
flags flags
@ -81,7 +81,11 @@ project "SHADE_Engine"
"msdf-atlas-gen", "msdf-atlas-gen",
"reactphysics3d", "reactphysics3d",
"imgui", "imgui",
"spdlog", }
postbuildcommands
{
"xcopy /s /r /y /q \"%{IncludeDir.spdlog}/bin\" \"$(OutDir)\""
} }
warnings 'Extra' warnings 'Extra'

View File

@ -14,13 +14,14 @@
#include "SHpch.h" #include "SHpch.h"
#include "../SHECSMacros.h" #include "../SHECSMacros.h"
#include "SH_API.h"
namespace SHADE namespace SHADE
{ {
class SHComponentManager; class SHComponentManager;
class SHComponent class SH_API SHComponent
{ {
friend SHComponentManager; friend SHComponentManager;

View File

@ -15,6 +15,7 @@
#include "../Components/SHComponent.h" #include "../Components/SHComponent.h"
#include "../System/SHComponentManager.h" #include "../System/SHComponentManager.h"
//#include "../../Scene/SHSceneNode.h" //#include "../../Scene/SHSceneNode.h"
#include "SH_API.h"
@ -23,7 +24,7 @@ namespace SHADE
class SHComponentManager; class SHComponentManager;
class SHEntityManager; class SHEntityManager;
class SHEntity class SH_API SHEntity
{ {
public: public:

View File

@ -19,13 +19,14 @@
#include "../Components/SHComponent.h" #include "../Components/SHComponent.h"
#include "../Components/SHComponentGroup.h" #include "../Components/SHComponentGroup.h"
//#include "Scene/SHSceneNode.h" //#include "Scene/SHSceneNode.h"
#include "SH_API.h"
#include <cassert> #include <cassert>
namespace SHADE namespace SHADE
{ {
class SHComponentManager class SH_API SHComponentManager
{ {
private: private:

View File

@ -22,11 +22,12 @@
#include "../Components/SHComponent.h" #include "../Components/SHComponent.h"
#include "../General/SHHandleGenerator.h" #include "../General/SHHandleGenerator.h"
#include "../SHECSMacros.h" #include "../SHECSMacros.h"
#include "SH_API.h"
namespace SHADE namespace SHADE
{ {
class SHEntityManager class SH_API SHEntityManager
{ {
private: private:
static std::vector<std::unique_ptr<SHEntity>> entityVec; static std::vector<std::unique_ptr<SHEntity>> entityVec;

View File

@ -5,6 +5,7 @@
#include <functional> #include <functional>
#include <unordered_map> #include <unordered_map>
#include "SHWindowMap.h" #include "SHWindowMap.h"
#include "SH_API.h"
namespace SHADE namespace SHADE
{ {
@ -67,7 +68,7 @@ namespace SHADE
std::string icoPath = ""; std::string icoPath = "";
}; };
class SHWindow class SH_API SHWindow
{ {
public: public:
using SHVec2 = std::pair<uint32_t, uint32_t>; using SHVec2 = std::pair<uint32_t, uint32_t>;

36
SHADE_Engine/src/SH_API.h Normal file
View File

@ -0,0 +1,36 @@
/************************************************************************************//*!
\file SH_API.h
\author Tng Kah Wei, kahwei.tng, 390009620
\par email: kahwei.tng\@digipen.edu
\date Sep 13, 2022
\brief Contains dllexport and dllimport macros for the SHADE Engine.
Copyright (C) 2022 DigiPen Institute of Technology.
Reproduction or disclosure of this file or its contents without the prior written consent
of DigiPen Institute of Technology is prohibited.
*//*************************************************************************************/
#pragma once
// Select the correct export system based on the compiler
#if defined SH_LIB
# define SH_API
#else
# if defined _WIN32 || defined __CYGWIN__ || defined _MSC_VER
# define SH_EXPORT __declspec(dllexport)
# define SH_IMPORT __declspec(dllimport)
# elif defined __GNUC__ && __GNUC__ >= 4
# define SH_EXPORT __attribute__((visibility("default")))
# define SH_IMPORT __attribute__((visibility("default")))
# else /* Unsupported compiler */
# define SH_EXPORT
# define SH_IMPORT
# endif
// Define the correct
# ifndef SH_API
# if defined SH_API_EXPORT
# define SH_API SH_EXPORT
# else
# define SH_API SH_IMPORT
# endif
# endif
#endif

View File

@ -12,13 +12,15 @@
#include <exception> #include <exception>
#include "SH_API.h"
namespace SHADE namespace SHADE
{ {
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
/* Type Definitions */ /* Type Definitions */
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
class SHExceptionHandler class SH_API SHExceptionHandler
{ {
public: public:
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/

View File

@ -30,8 +30,9 @@ namespace SHADE
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
/* Static Data Member Definitions */ /* Static Data Member Definitions */
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
unsigned char SHLogger::configFlags = DEFAULT_CONFIG_FLAG; unsigned char SHLogger::configFlags = DEFAULT_CONFIG_FLAG;
SHLogger::DateFormat SHLogger::dateFormat = SHLogger::DateFormat::DD_MM_YY; SHLogger::DateFormat SHLogger::dateFormat = SHLogger::DateFormat::DD_MM_YY;
SHLogger::Logger SHLogger::logger = nullptr;
std::string SHLogger::trivialPattern; std::string SHLogger::trivialPattern;
std::string SHLogger::verbosePattern; std::string SHLogger::verbosePattern;
@ -142,7 +143,7 @@ namespace SHADE
/* Public Function Member Definitions */ /* Public Function Member Definitions */
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
void SHLogger::Initialise(const Config& config) SHLogger::Logger SHLogger::Initialise(const Config& config)
{ {
SetConfig(config); SetConfig(config);
@ -176,10 +177,10 @@ namespace SHADE
FILE_SINK->set_pattern(trivialPattern + "%v"); FILE_SINK->set_pattern(trivialPattern + "%v");
// Create and register logger with spdlog // Create and register logger with spdlog
const auto LOGGER = std::make_shared<spdlog::logger>(SHLOGGER_NAME, sinks.begin(), sinks.end()); logger = std::make_shared<spdlog::logger>(SHLOGGER_NAME, sinks.begin(), sinks.end());
LOGGER->set_level(spdlog::level::trace); logger->set_level(spdlog::level::trace);
LOGGER->flush_on(spdlog::level::trace); logger->flush_on(spdlog::level::trace);
register_logger(LOGGER); spdlog::register_logger(logger);
// Flush every 3 seconds // Flush every 3 seconds
spdlog::flush_every(std::chrono::seconds(config.flushTime)); spdlog::flush_every(std::chrono::seconds(config.flushTime));
@ -190,6 +191,8 @@ namespace SHADE
{ {
std::cout << "Log initialisation failed: " << e.what() << std::endl; std::cout << "Log initialisation failed: " << e.what() << std::endl;
} }
return logger;
} }
void SHLogger::Shutdown() noexcept void SHLogger::Shutdown() noexcept

View File

@ -16,6 +16,7 @@
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE #define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE
#include <spdlog/spdlog.h> #include <spdlog/spdlog.h>
#include "SH_API.h"
/*-------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------*/
/* Macros */ /* Macros */
@ -28,13 +29,15 @@ namespace SHADE
/* Type Definitions */ /* Type Definitions */
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
class SHLogger class SH_API SHLogger
{ {
public: public:
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
/* Type Definitions */ /* Type Definitions */
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
using Logger = std::shared_ptr<spdlog::logger>;
enum class ClockFormat { _12HR, _24HR }; enum class ClockFormat { _12HR, _24HR };
enum class DateFormat enum class DateFormat
@ -107,8 +110,8 @@ namespace SHADE
* @brief Creates a console and a file to log to. * @brief Creates a console and a file to log to.
* @param[in] config The configuration parameters for the logger. * @param[in] config The configuration parameters for the logger.
*/ */
static void Initialise (const Config& config = Config{}); static Logger Initialise (const Config& config = Config{});
static void Shutdown () noexcept; static void Shutdown () noexcept;
/** /**
* @brief The next message logged by the logger will be set to follow the trivial pattern. * @brief The next message logged by the logger will be set to follow the trivial pattern.
@ -146,6 +149,8 @@ namespace SHADE
static unsigned char configFlags; // Initialised 0 0 FuncLine# FuncFileName Date TimeFormat Time static unsigned char configFlags; // Initialised 0 0 FuncLine# FuncFileName Date TimeFormat Time
static DateFormat dateFormat; static DateFormat dateFormat;
static Logger logger;
static std::string trivialPattern; static std::string trivialPattern;
static std::string verbosePattern; static std::string verbosePattern;
@ -190,3 +195,6 @@ namespace SHADE
// Misc Logging Macros // Misc Logging Macros
#define SHLOG_FLOOR() SHADE::SHLogger::UseTrivialPattern(); SPDLOG_LOGGER_INFO(spdlog::get(SHLOGGER_NAME), "--------------------------------"); #define SHLOG_FLOOR() SHADE::SHLogger::UseTrivialPattern(); SPDLOG_LOGGER_INFO(spdlog::get(SHLOGGER_NAME), "--------------------------------");
// For use outside the library to register the logger
#define SHLOG_REGISTER(logger) spdlog::register_logger(logger); spdlog::set_level(spdlog::level::level_enum::trace);

View File

@ -12,18 +12,18 @@ workspace "SHADE"
flags flags
{ {
"MultiProcessorCompile" "MultiProcessorCompile"
} }
outputdir = "%{cfg.buildcfg}_%{cfg.architecture}" outputdir = "%{wks.location}/bin/%{cfg.buildcfg}"
interdir = "%{wks.location}/bin_int"
include "SHADE_Application"
include "SHADE_Engine" include "SHADE_Engine"
include "SHADE_Application"
group "Dependencies" group "Dependencies"
include "Dependencies/msdf" include "Dependencies/msdf"
include "Dependencies/imgui" include "Dependencies/imgui"
include "Dependencies/spdlog"
--include "Dependencies/tracy" --include "Dependencies/tracy"
include "Dependencies/yamlcpp" include "Dependencies/yamlcpp"
include "Dependencies/reactphysics3d" include "Dependencies/reactphysics3d"