Improved Build Files

This commit is contained in:
Light 2021-08-21 15:53:36 +04:30
parent 2c7a24431c
commit 0080f6837c
10 changed files with 163 additions and 93 deletions

2
.gitignore vendored
View file

@ -1,7 +1,7 @@
# Directories # Directories
.vs/ .vs/
bin/ bin/
bin-int/ bin-obj/
# VS Files # VS Files
**.vcxproj** **.vcxproj**

View file

@ -1,3 +1,5 @@
include "dependencies.lua"
workspace "Light" workspace "Light"
location "../" location "../"
startproject "Mirror" startproject "Mirror"
@ -12,18 +14,19 @@ workspace "Light"
} }
-- Directories -- -- Directories --
dependenciesdir = "%{wks.location}/Dependencies/" target_dir = "%{wks.location}/bin/%{cfg.buildcfg}/%{cfg.system}/%{cfg.architecture}/%{prj.name}"
outputdir = "%{cfg.buildcfg}/%{cfg.system}/%{cfg.architecture}/%{prj.name}" object_dir = "%{wks.location}/bin-obj/%{cfg.buildcfg}/%{cfg.system}/%{cfg.architecture}/%{prj.name}"
-- Projects -- -- Projects --
include "../Engine/build.lua" group ""
include "../Mirror/build.lua" include "../Engine/build.lua"
include "../Sandbox/build.lua" include "../Mirror/build.lua"
include "../Sandbox/build.lua"
-- Dependencies -- -- Dependencies --
group "Dependencies" group "Dependencies"
include "../Dependencies/GLFW/build.lua" include "../Dependencies/GLFW/build.lua"
include "../Dependencies/GLAD/build.lua" include "../Dependencies/GLAD/build.lua"
include "../Dependencies/imgui/build.lua" include "../Dependencies/imgui/build.lua"
include "../Dependencies/stb_image/build.lua" include "../Dependencies/stb_image/build.lua"
include "../Dependencies/entt/build.lua" include "../Dependencies/entt/build.lua"

View file

@ -0,0 +1,31 @@
-- environment directories
vulkan_sdk_env_dir = os.getenv("VULKAN_SDK")
-- include directories
include_dirs = {}
include_dirs["entt"] = "%{wks.location}/Dependencies/entt/";
include_dirs["glad"] = "%{wks.location}/Dependencies/GLAD/include";
include_dirs["glfw"] = "%{wks.location}/Dependencies/GLFW/include";
include_dirs["glm"] = "%{wks.location}/Dependencies/glm";
include_dirs["imgui"] = "%{wks.location}/Dependencies/imgui";
include_dirs["imgui_backends"] = "%{wks.location}/Dependencies/imgui/backends";
include_dirs["spdlog"] = "%{wks.location}/Dependencies/spdlog/include";
include_dirs["stb_image"] = "%{wks.location}/Dependencies/stb_image";
include_dirs["volk"] = "%{wks.location}/Dependencies/volk";
include_dirs["engine"] = "%{wks.location}/Engine/src/Engine";
include_dirs["engine_platform_graphics"] = "%{wks.location}/Engine/src/Platform/GraphicsAPI";
include_dirs["engine_platform_os"] = "%{wks.location}/Engine/src/Platform/OS";
include_dirs["vulkan_sdk"] = "%{vulkan_sdk_env_dir}/Include";
-- library directories
lib_dirs = {}
lib_dirs["vulkan_sdk"] = "%{vulkan_sdk_env_dir}/Lib/"
-- libraries
libs = {}
libs["shaderc"] = "%{vulkan_sdk_env_dir}/Lib/shaderc_shared.lib"
libs["spirv_cross"] = "%{vulkan_sdk_env_dir}/Lib/spirv-cross-core.lib"

View file

@ -1,10 +1,10 @@
project "GLAD" project "GLAD"
-- Output Directories --
location "%{wks.location}/Dependencies/GLAD" location "%{wks.location}/Dependencies/GLAD"
-- Output Directories -- targetdir (target_dir)
targetdir ("%{wks.location}/bin/" .. outputdir) objdir (object_dir)
objdir ("%{wks.location}/bin-int/" .. outputdir)
-- Compiler -- -- Compiler --
kind "StaticLib" kind "StaticLib"
@ -13,13 +13,14 @@ project "GLAD"
-- Project Files --- -- Project Files ---
files files
{ {
"**.c", "src/glad.c",
"**.h", "include/glad/glad.h",
"include/KHR/khrplatform.h",
"build.lua" "%{prj.location}/build.lua",
} }
-- Dependencies -- -- Includes --
includedirs includedirs
{ {
"%{prj.location}/include/" "%{prj.location}/include/"
@ -51,4 +52,4 @@ project "GLAD"
-- distribution -- distribution
filter "configurations:Distribution" filter "configurations:Distribution"
runtime "Release" runtime "Release"
optimize "on" optimize "full"

View file

@ -1,17 +1,15 @@
project "entt" project "entt"
-- Output Directories --
location "%{wks.location}/Dependencies/entt" location "%{wks.location}/Dependencies/entt"
-- Output Directories -- targetdir (target_dir)
targetdir ("%{wks.location}/bin/" .. outputdir) objdir (object_dir)
objdir ("%{wks.location}/bin-int/" .. outputdir)
-- Compiler -- -- Compiler --
kind "StaticLib" kind "StaticLib"
language "C++" language "C++"
cppdialect "C++17" cppdialect "C++17"
optimize "on"
-- Project Files --- -- Project Files ---
files files
@ -19,7 +17,7 @@ project "entt"
"entt.cpp", "entt.cpp",
"entt.hpp", "entt.hpp",
"build.lua" "%{prj.location}/build.lua",
} }
--- Filters --- --- Filters ---
@ -33,4 +31,19 @@ project "entt"
"_CRT_SECURE_NO_WARNINGS", "_CRT_SECURE_NO_WARNINGS",
} }
flags { "MultiProcessorCompile" } flags { "MultiProcessorCompile" }
-- debug
filter "configurations:Debug"
runtime "Debug"
symbols "on"
-- release
filter "configurations:Release"
runtime "Release"
optimize "on"
-- distribution
filter "configurations:Distribution"
runtime "Release"
optimize "full"

View file

@ -1,16 +1,14 @@
project "stb_image" project "stb_image"
-- Output Directories --
location "%{wks.location}/Dependencies/stb_image" location "%{wks.location}/Dependencies/stb_image"
-- Output Directories -- targetdir (target_dir)
targetdir ("%{wks.location}/bin/" .. outputdir) objdir (object_dir)
objdir ("%{wks.location}/bin-int/" .. outputdir)
-- Compiler -- -- Compiler --
kind "StaticLib" kind "StaticLib"
language "C" language "C"
optimize "on"
-- Project Files --- -- Project Files ---
files files
@ -18,7 +16,7 @@ project "stb_image"
"stb_image.c", "stb_image.c",
"stb_image.h", "stb_image.h",
"build.lua" "%{prj.location}/build.lua",
} }
--- Filters --- --- Filters ---
@ -32,4 +30,19 @@ project "stb_image"
"_CRT_SECURE_NO_WARNINGS", "_CRT_SECURE_NO_WARNINGS",
} }
flags { "MultiProcessorCompile" } flags { "MultiProcessorCompile" }
-- debug
filter "configurations:Debug"
runtime "Debug"
symbols "on"
-- release
filter "configurations:Release"
runtime "Release"
optimize "on"
-- distribution
filter "configurations:Distribution"
runtime "Release"
optimize "full"

View file

@ -3,60 +3,57 @@ project "Engine"
-- Output Directories -- -- Output Directories --
location "%{wks.location}/Engine/" location "%{wks.location}/Engine/"
targetdir ("%{wks.location}/bin/" .. outputdir) targetdir (target_dir)
objdir ("%{wks.location}/bin-int/" .. outputdir) objdir (object_dir)
-- Compiler -- -- Compiler --
-- kind
kind "StaticLib" kind "StaticLib"
-- language
language "C++" language "C++"
cppdialect "C++17" cppdialect "C++17"
-- pch
pchsource "src/Engine/ltpch.cpp" pchsource "src/Engine/ltpch.cpp"
pchheader "ltpch.h" pchheader "ltpch.h"
-- Project Files --- -- Project Files --
files files
{ {
-- src -- src
"%{prj.location}/src/**.h", "%{prj.location}/src/**.h",
"%{prj.location}/src/**.cpp", "%{prj.location}/src/**.cpp",
-- premake -- res
"%{prj.location}/res/**",
-- build.lua
"%{prj.location}/build.lua", "%{prj.location}/build.lua",
"%{prj.location}/res/**"
} }
-- Dependencies -- -- Includes --
includedirs includedirs
{ {
-- engine -- engine
"%{prj.location}" , "%{include_dirs.engine}",
"%{prj.location}/src" , "%{include_dirs.engine_platform_graphics}",
"%{prj.location}/src/Engine" , "%{include_dirs.engine_platform_os}",
"%{prj.location}/src/Platform/GraphicsAPI" ,
"%{prj.location}/src/Platform/OS" ,
-- 3rd party -- 3rd party
(dependenciesdir .. "spdlog/include/"), "%{include_dirs.entt}",
(dependenciesdir .. "GLFW/include/"), "%{include_dirs.glad}",
(dependenciesdir .. "GLAD/include"), "%{include_dirs.glfw}",
(dependenciesdir .. "imgui/backends"), "%{include_dirs.glm}",
(dependenciesdir .. "imgui/"), "%{include_dirs.imgui}",
(dependenciesdir .. "stb_image/"), "%{include_dirs.imgui_backends}",
(dependenciesdir .. "glm/"), "%{include_dirs.spdlog}",
(dependenciesdir .. "entt/"), "%{include_dirs.stb_image}",
"%{include_dirs.volk}",
} }
-- Links --
links links
{ {
"GLFW" , "GLFW",
"GLAD" , "GLAD",
"ImGui" , "ImGui",
"stb_image", "stb_image",
"entt", "entt",
} }
@ -70,9 +67,9 @@ project "Engine"
links links
{ {
"d3d11.lib" , "d3d11.lib",
"dxguid.lib" , "dxguid.lib",
"D3DCompiler.lib" , "D3DCompiler.lib",
} }
flags { "MultiProcessorCompile" } flags { "MultiProcessorCompile" }
@ -112,7 +109,7 @@ project "Engine"
-- distribution -- distribution
filter "configurations:Distribution" filter "configurations:Distribution"
defines "LIGHT_DIST" defines "LIGHT_DIST"
optimize "on" optimize "full"
filter { "files:**.hlsl" } filter { "files:**.hlsl" }
flags "ExcludeFromBuild" flags "ExcludeFromBuild"

View file

@ -3,8 +3,8 @@ project "Mirror"
-- Output Directories -- -- Output Directories --
location "%{wks.location}/Mirror/" location "%{wks.location}/Mirror/"
targetdir ("%{wks.location}/bin/" .. outputdir) targetdir (target_dir)
objdir ("%{wks.location}/bin-int/" .. outputdir) objdir (object_dir)
-- Compiler -- -- Compiler --
kind "ConsoleApp" kind "ConsoleApp"
@ -14,29 +14,35 @@ project "Mirror"
-- Project Files --- -- Project Files ---
files files
{ {
-- src
"%{prj.location}/src/**.h", "%{prj.location}/src/**.h",
"%{prj.location}/src/**.cpp", "%{prj.location}/src/**.cpp",
-- res
"%{prj.location}/res/**",
-- build.lua
"%{prj.location}/build.lua", "%{prj.location}/build.lua",
} }
-- Dependencies -- -- Includes --
includedirs includedirs
{ {
-- Engine -- engine
"%{wks.location}/Engine/src", "%{include_dirs.engine}",
"%{wks.location}/Engine/src/Engine", "%{include_dirs.engine_platform_graphics}",
"%{wks.location}/Engine/src/Platform/GraphicsAPI", "%{include_dirs.engine_platform_os}",
"%{wks.location}/Engine/src/Platform/OS",
-- 3rd party -- 3rd party
(dependenciesdir .. "spdlog/include/"), "%{include_dirs.entt}",
(dependenciesdir .. "imgui/"), "%{include_dirs.glm}",
(dependenciesdir .. "imgui/backends"), "%{include_dirs.imgui}",
(dependenciesdir .. "glm/"), "%{include_dirs.imgui_backends}",
(dependenciesdir .. "entt/"), "%{include_dirs.spdlog}",
"%{include_dirs.stb_image}",
} }
-- Links --
links links
{ {
"Engine", "Engine",
@ -79,4 +85,4 @@ project "Mirror"
-- distribution -- distribution
filter "configurations:Distribution" filter "configurations:Distribution"
defines "LIGHT_DIST" defines "LIGHT_DIST"
optimize "on" optimize "full"

View file

@ -3,8 +3,8 @@ project "Sandbox"
-- Output Directories -- -- Output Directories --
location "%{wks.location}/Sandbox/" location "%{wks.location}/Sandbox/"
targetdir ("%{wks.location}/bin/" .. outputdir) targetdir (target_dir)
objdir ("%{wks.location}/bin-int/" .. outputdir) objdir (object_dir)
-- Compiler -- -- Compiler --
kind "ConsoleApp" kind "ConsoleApp"
@ -14,29 +14,35 @@ project "Sandbox"
-- Project Files --- -- Project Files ---
files files
{ {
-- src
"%{prj.location}/src/**.h", "%{prj.location}/src/**.h",
"%{prj.location}/src/**.cpp", "%{prj.location}/src/**.cpp",
-- res
"%{prj.location}/res/**",
-- build.lua
"%{prj.location}/build.lua", "%{prj.location}/build.lua",
} }
-- Dependencies -- -- Includes --
includedirs includedirs
{ {
-- Engine -- engine
"%{wks.location}/Engine/src", "%{include_dirs.engine}",
"%{wks.location}/Engine/src/Engine", "%{include_dirs.engine_platform_graphics}",
"%{wks.location}/Engine/src/Platform/GraphicsAPI", "%{include_dirs.engine_platform_os}",
"%{wks.location}/Engine/src/Platform/OS",
-- 3rd party -- 3rd party
(dependenciesdir .. "spdlog/include/"), "%{include_dirs.entt}",
(dependenciesdir .. "imgui/"), "%{include_dirs.glm}",
(dependenciesdir .. "imgui/backends"), "%{include_dirs.imgui}",
(dependenciesdir .. "glm/"), "%{include_dirs.imgui_backends}",
(dependenciesdir .. "entt/"), "%{include_dirs.spdlog}",
"%{include_dirs.stb_image}",
} }
-- Links --
links links
{ {
"Engine", "Engine",
@ -79,4 +85,4 @@ project "Sandbox"
-- distribution -- distribution
filter "configurations:Distribution" filter "configurations:Distribution"
defines "LIGHT_DIST" defines "LIGHT_DIST"
optimize "on" optimize "full"