add_rules("mode.debug", "mode.release") -- add_requires("vulkansdk", "glfw", "fmt", "vulkan-memory-allocator", "spdlog", "glm") add_requires("shaderc") -- Project settings set_project("iris_renderer") set_version("1.0") set_languages("c++20") -- Project directories local project_root = os.projectdir() local src_dir = path.join(project_root, "src") local ext_dir = path.join(project_root, "ext") -- ImGui target target("imgui") set_kind("static") local imgui_dir = path.join(ext_dir, "imgui") -- Add source files add_files( path.join(imgui_dir, "imgui.cpp"), path.join(imgui_dir, "imgui_demo.cpp"), path.join(imgui_dir, "imgui_draw.cpp"), path.join(imgui_dir, "imgui_tables.cpp"), path.join(imgui_dir, "imgui_widgets.cpp"), path.join(imgui_dir, "backends/imgui_impl_glfw.cpp"), path.join(imgui_dir, "backends/imgui_impl_vulkan.cpp") ) if is_host("windows") then add_packages("vulkansdk", "glfw") end -- Add include directories add_includedirs( imgui_dir, path.join(imgui_dir, "backends"), {public = true} ) -- Arguments for compilation target("argparse") set_kind("headeronly") add_includedirs(path.join(ext_dir, "argparse/include"), {public = true}) target("tinygltf") set_kind("headeronly") add_includedirs(path.join(ext_dir, "tinygltf.git"), {public = true}) add_cxxflags("-w") target("tinyobjloader") set_kind("headeronly") add_includedirs(path.join(ext_dir, "tinyobjloader"), {public = true}) target("stb") set_kind("headeronly") add_includedirs(path.join(ext_dir, "stb"), {public = true}) target("glm") set_kind("headeronly") add_includedirs(path.join(ext_dir, "glm"), {public = true}) -- Main executable target target("iris_renderer") set_kind("binary") add_files(path.join(src_dir, "**.cpp")) add_includedirs("include") -- Link external libraries add_deps("argparse", "imgui", "tinygltf", "tinyobjloader", "stb", "glm") -- Add libraries add_packages("vulkansdk", "glfw", "fmt", "vulkan-memory-allocator", "spdlog", "glm", "shaderc") -- OS-specific libraries (dl, pthread, X11, etc.) if is_plat("linux") then add_syslinks("vulkan", "glfw", "fmt") add_syslinks("dl", "pthread", "X11", "Xxf86vm", "Xrandr", "Xi") end -- Compiler options add_cxxflags("-Wall", "-Wextra", "-Wno-missing-field-initializers") -- Vulkan validation layers for debug builds if is_mode("debug") then add_defines("USE_VULKAN_VALIDATION_LAYERS") end