From 50063827905b0d36a8a55f0382b5cbd90147faad Mon Sep 17 00:00:00 2001 From: Mike Solar Date: Mon, 3 Aug 2026 14:38:38 +0800 Subject: [PATCH] ci: oakvulkan keeps full sources on Windows vulkanrenderer.cpp is NOT part of oakengine-obj (unlike openglrenderer.cpp), so the entry-point-only treatment from the previous change left VulkanRenderer symbols undefined. Compile the renderer into the plugin and link oakengine-obj + olive-version-obj. --- engine/CMakeLists.txt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt index 53a27cc57..0a575da82 100644 --- a/engine/CMakeLists.txt +++ b/engine/CMakeLists.txt @@ -206,10 +206,16 @@ if (OAK_ENABLE_DYNAMIC_RENDER_BACKEND) if (Vulkan_FOUND) if (WIN32) - # Same treatment as oakgl (see above): entry point only, engine - # objects come from oakengine-obj. - add_library(oakvulkan SHARED render/vulkan/vulkanbackend_c.cpp) - set_target_properties(oakvulkan PROPERTIES AUTOMOC OFF) + # Engine-internal C++ symbols are not exported from + # liboakengine.dll; link the object library like the engine tests + # (plus version obj for k_app_version). Unlike openglrenderer.cpp, + # vulkanrenderer.cpp is NOT part of oakengine-obj, so the plugin + # must compile it itself. + add_library(oakvulkan SHARED + render/vulkan/vulkanbackend_c.cpp + render/vulkan/vulkanrenderer.cpp + render/vulkan/vulkanrenderer.h + ) target_link_libraries(oakvulkan PRIVATE oakengine-obj $) else ()