workspace("HardCompound") architecture("x64") startproject("HardCompound") configurations({ "Debug", "Release" }) -- Variable definitions SRCDIR = "src" VENDOR = "vendor" BUILD = "build" project("HardCompound") kind("ConsoleApp") language("C++") cppdialect("C++20") staticruntime("on") -- Helps avoid missing DLL errors on Windows targetdir(BUILD .. "/bin/%{cfg.buildcfg}") objdir(BUILD .. "/obj/%{cfg.buildcfg}") -- 1. Source Files files({ -- Your Source Code path.join(SRCDIR, "**.h"), path.join(SRCDIR, "**.cpp"), -- GLAD (Still C, works fine in C++ project) path.join(VENDOR, "glad/src/glad.c"), -- ImGui Core path.join(VENDOR, "imgui/imgui.cpp"), path.join(VENDOR, "imgui/imgui_draw.cpp"), path.join(VENDOR, "imgui/imgui_tables.cpp"), path.join(VENDOR, "imgui/imgui_widgets.cpp"), -- path.join(VENDOR, "imgui/imgui_demo.cpp"), -- Good for testing -- ImGui Backends (CRITICAL: Connects ImGui to GLFW/OpenGL) path.join(VENDOR, "imgui/backends/imgui_impl_glfw.cpp"), path.join(VENDOR, "imgui/backends/imgui_impl_opengl3.cpp"), -- ImPlot path.join(VENDOR, "implot/implot.cpp"), path.join(VENDOR, "implot/implot_items.cpp"), -- path.join(VENDOR, "implot/implot_demo.cpp"), }) -- 2. Include Directories includedirs({ SRCDIR, path.join(VENDOR, "glad/include"), path.join(VENDOR, "glfw/include"), path.join(VENDOR, "duckdb/include"), path.join(VENDOR, "mariadb/include"), path.join(VENDOR, "imgui"), -- For imgui.h path.join(VENDOR, "imgui/backends"), -- For imgui_impl_glfw.h path.join(VENDOR, "implot"), -- For implot.h }) -- 3. Configuration Filters filter("configurations:Debug") defines({ "DEBUG" }) symbols("On") filter("configurations:Release") defines({ "NDEBUG" }) optimize("On") -- 4. Linux Linking filter("system:linux") defines({ "PLATFORM_LINUX" }) links({ "glfw", "duckdb", "dl", "pthread", "m" }) linkoptions({ "`pkg-config --libs libmariadb`" }) buildoptions({ "`pkg-config --cflags libmariadb`" }) -- 5. Windows Linking (MinGW Cross-Compile) filter("system:windows") defines({ "PLATFORM_WINDOWS" }) -- Ensure these paths exist and contain the .lib / .dll files libdirs({ path.join(VENDOR, "glfw/lib"), path.join(VENDOR, "duckdb/lib"), path.join(VENDOR, "mariadb/lib"), }) links({ "glfw3", -- Looks for libglfw3.a "duckdb", -- Looks for duckdb.lib / libduckdb.a "libmariadb", -- Looks for libmariadb.lib "ws2_32", "gdi32", "opengl32", "shlwapi", "crypt32", "secur32", "dwmapi", "winmm", })