require "ecc/ecc" require "ninja/ninja" workspace "snake" architecture "x64" configurations { "Debug", "Release" } prebuildcommands { "git clone https://github.com/SFML/SFML.git vendor/SFML", "cd vendor/SFML && git checkout 3.0.2", } filter "action:vs*" prebuildcommands { "cd vendor/SFML && cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DSFML_BUILD_AUDIO=1 -DSFML_BUILD_GRAPHICS=1 -DSFML_BUILD_WINDOW=1 -DSFML_USE_STATIC_STD_LIBS=1 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=./lib" } project_dir = "$(SolutionDir)" filter "action:gmake" prebuildcommands { "cd vendor/SFML && cmake -S . -B build -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DSFML_BUILD_AUDIO=1 -DSFML_BUILD_GRAPHICS=1 -DSFML_BUILD_WINDOW=1", "cd vendor/SFML && cmake --build build" } project_dir = "%{wks.location}/" filter "action:premake-ninja" prebuildcommands { "cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DSFML_BUILD_AUDIO=1 -DSFML_BUILD_GRAPHICS=1 -DSFML_BUILD_WINDOW=1", "cmake --build build" } project_dir = "%{wks.location}/" filter"" project "snake" output_dir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}" intdir = project_dir .. "intermediate-files/" .. output_dir bindir = project_dir .. "bin/" .. output_dir sfmldir = project_dir .. "vendor/SFML" imguidir = project_dir .. "vendor/imgui" include_dir = project_dir .. "include" language "C++" cppdialect "C++20" systemversion "latest" kind "WindowedApp" targetname "snake" targetdir (bindir) objdir (intdir) debugdir (project_dir) includedirs { "src", include_dir, sfmldir .. "/include", imguidir } libdirs (sfmldir .. "/build/lib") files { "src/**.cpp", "include/**.h", "include/**.hpp", "vendor/imgui/imgui.cpp", "vendor/imgui/imgui_draw.cpp", "vendor/imgui/imgui_tables.cpp", "vendor/imgui/imgui_widgets.cpp", "vendor/imgui/imgui-SFML.cpp" } --windows specific settings-- filter{"system:windows"} defines {"PLATFORM_WINDOWS", "SFML_STATIC"} staticruntime "on" filter {"system:windows", "configurations:debug"} defines{"_DEBUG", "_CONSOLE"} links { "sfml-main-d", "sfml-graphics-s-d", "sfml-window-s-d", "opengl32", "gdi32", "freetyped", "sfml-audio-s-d", "flacd", "vorbisfiled", "vorbisd", "oggd", "sfml-system-s-d", "winmm" } filter {"system:windows", "configurations:release"} defines{"NDEBUG"} links { "sfml-main", "sfml-graphics-s", "sfml-window-s", "opengl32", "gdi32", "freetype", "sfml-audio-s", "flac", "vorbisfile", "vorbis", "ogg", "sfml-system-s", "winmm" } --linux specific settings-- filter {"system:linux"} defines {"PLATFORM_LINUX"} links { "sfml-graphics-s", "sfml-window-s", "sfml-audio-s", "sfml-system-s", "Xi", "Xrandr", "Xcursor", "freetype", "X11", "udev", "FLAC", "ogg", "vorbis", "vorbisenc", "vorbisfile", "pthread", "OpenGL", } --config settings-- filter "configurations:debug" defines {"LOG_ENABLE", "GAME_DEBUG"} symbols "on" runtime "Debug" warnings "Extra" filter "configurations:release" defines {"GAME_RELEASE"} optimize "Speed" inlining "Auto" symbols "off" runtime "Release"