file(GLOB_RECURSE ENGINE_SOURCES src/*.cpp ) # ImGui(docking 分支,vendored submodule) set(IMGUI_DIR ${CMAKE_SOURCE_DIR}/Lib/imgui) set(IMGUI_SOURCES ${IMGUI_DIR}/imgui.cpp ${IMGUI_DIR}/imgui_draw.cpp ${IMGUI_DIR}/imgui_tables.cpp ${IMGUI_DIR}/imgui_widgets.cpp # ${IMGUI_DIR}/imgui_demo.cpp # ShowDemoWindow 的实现(调试期保留) ${IMGUI_DIR}/backends/imgui_impl_glfw.cpp ${IMGUI_DIR}/backends/imgui_impl_vulkan.cpp ) # 编译成静态库 add_library(Engine STATIC ${ENGINE_SOURCES} ${IMGUI_SOURCES}) target_include_directories(Engine PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/Lib/entt/src ${CMAKE_SOURCE_DIR}/Lib/VulkanMemoryAllocator/include ${IMGUI_DIR} ${IMGUI_DIR}/backends ) # 链接第三方库 target_link_libraries(Engine PUBLIC glfw Vulkan::Vulkan spdlog::spdlog stb assimp::assimp ) # Tracy(CPU/GPU 帧分析):宏关闭时全部退化空操作,零开销 set(TRACY_DIR ${CMAKE_SOURCE_DIR}/Lib/tracy) target_include_directories(Engine PUBLIC ${TRACY_DIR}/public) target_sources(Engine PRIVATE ${TRACY_DIR}/public/TracyClient.cpp) target_compile_definitions(Engine PUBLIC TRACY_ENABLE) # 按需剖析:GPU context 宣告(GpuNewContext)与连接绑定——GUI 永远晚于 # 程序启动连接,没有这个宏宣告消息被丢弃,GPU 时间线永远空白 target_compile_definitions(Engine PUBLIC TRACY_ON_DEMAND) find_package(Threads REQUIRED) target_link_libraries(Engine PUBLIC Threads::Threads) # meshoptimizer(vendored,LOD 网格简化;submodule 机制故障改为直接 vendor) file(GLOB MESHOPT_SOURCES ${CMAKE_SOURCE_DIR}/Lib/meshoptimizer/src/*.cpp) add_library(meshopt STATIC ${MESHOPT_SOURCES}) target_include_directories(meshopt PUBLIC ${CMAKE_SOURCE_DIR}/Lib/meshoptimizer/src) target_link_libraries(Engine PUBLIC meshopt) target_compile_definitions(Engine PRIVATE VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1)