diff --git a/Create-Solution.bat b/Create-Solution.bat index 2cd4d72..a7cce62 100644 --- a/Create-Solution.bat +++ b/Create-Solution.bat @@ -1,2 +1,4 @@ +ECHO OFF +ECHO Project files will be written to ./build .\vendor\premake5\premake5.exe vs2022 PAUSE \ No newline at end of file diff --git a/premake5.lua b/premake5.lua index 4bcf97f..dd55389 100644 --- a/premake5.lua +++ b/premake5.lua @@ -7,6 +7,8 @@ local vorbis = require("vendor/vorbis/build-vorbis") local freetype = require("vendor/freetype/build-freetype") local imguisfml = require("vendor/imgui-sfml/build-imgui-sfml") +local snake = require("project") + workspace "snake" architecture "x64" startproject"snake" @@ -22,9 +24,9 @@ workspace "snake" output_dir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}" - intdir = "../intermediate-files/" - bindir = "../bin/" .. output_dir - liboutdir = "../lib/" .. output_dir + intdir = "intermediate-files/" + bindir = "bin/" .. output_dir + liboutdir = "lib/" .. output_dir externalwarnings "Off" @@ -51,43 +53,4 @@ workspace "snake" imguisfml.generateproject(liboutdir, intdir) group"" - project "snake" - language "C++" - cppdialect "C++20" - systemversion "latest" - kind "WindowedApp" - targetname "snake" - targetdir (bindir) - objdir (intdir) - debugdir (path.getabsolute(path.getdirectory(_SCRIPT))) - - - imguisfml.link() - sfml.link() - - includedirs - { - "src", - "include", - } - - files - { - "src/**.cpp", - "include/**.h", - "include/**.hpp", - } - - --windows specific settings-- - filter{"system:windows"} - defines {"PLATFORM_WINDOWS"} - - filter {"system:windows", "configurations:debug"} - defines{"_DEBUG", "_CONSOLE"} - - filter {"system:windows", "configurations:release"} - defines{"NDEBUG"} - - --linux specific settings-- - filter {"system:linux"} - defines {"PLATFORM_LINUX"} + snake.generateproject(bindir, intdir) diff --git a/project.lua b/project.lua new file mode 100644 index 0000000..63a8efa --- /dev/null +++ b/project.lua @@ -0,0 +1,51 @@ +local m = {} + +local scriptdir = path.getabsolute(path.getdirectory(_SCRIPT)) +local sfml = require("../vendor/sfml/build-sfml") +local imguisfml = require("../vendor/imgui-sfml/build-imgui-sfml") + +function m.generateproject(bindir, intdir) +project "snake" + language "C++" + cppdialect "C++20" + systemversion "latest" + kind "WindowedApp" + targetname "snake" + targetdir (bindir) + debugdir (scriptdir) + objdir (intdir) + + -- link order matters on GCC/Clang + imguisfml.link() + sfml.link() + + includedirs + { + path.join(scriptdir, "src"), + path.join(scriptdir, "include"), + } + + files + { + path.join(scriptdir, "src/**.cpp"), + path.join(scriptdir, "include/**.h"), + path.join(scriptdir, "include/**.hpp"), + } + + --windows specific settings-- + filter{"system:windows"} + defines {"PLATFORM_WINDOWS"} + + filter {"system:windows", "configurations:debug"} + defines{"_DEBUG", "_CONSOLE"} + + filter {"system:windows", "configurations:release"} + defines{"NDEBUG"} + + --linux specific settings-- + filter {"system:linux"} + defines {"PLATFORM_LINUX"} + +end + +return m \ No newline at end of file