This commit is contained in:
2026-05-14 13:30:06 +08:00
parent 974946cee4
commit e43171521d
91 changed files with 10485 additions and 3254 deletions
+59
View File
@@ -1,11 +1,21 @@
# 模块:domain、persistence、workspace、depth、animation(时间采样)
set(CORE_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
option(LT_WITH_VIPS "Use libvips for GB-scale PNG/JPEG (libvips-dev / pkg-config vips)" ON)
set(CORE_SOURCES
${CORE_ROOT}/domain/Project.cpp
${CORE_ROOT}/image/ImageFileLoader.cpp
${CORE_ROOT}/large_image/VipsBackend.cpp
${CORE_ROOT}/workspace/ProjectWorkspace.cpp
${CORE_ROOT}/persistence/PersistentBinaryObject.cpp
${CORE_ROOT}/persistence/AnimationBinary.cpp
${CORE_ROOT}/persistence/EntityPayloadBinary.cpp
${CORE_ROOT}/persistence/JsonFileAtomic.cpp
${CORE_ROOT}/persistence/EntityBundleStore.cpp
${CORE_ROOT}/persistence/AnimationBundleStore.cpp
${CORE_ROOT}/persistence/AsyncProjectWriter.cpp
${CORE_ROOT}/animation/AnimationEvaluator.cpp
${CORE_ROOT}/animation/AnimationSampling.cpp
${CORE_ROOT}/depth/DepthService.cpp
${CORE_ROOT}/net/ModelServerClient.cpp
@@ -17,11 +27,20 @@ set(CORE_SOURCES
)
set(CORE_HEADERS
${CORE_ROOT}/image/ImageDecodeConfig.h
${CORE_ROOT}/image/ImageFileLoader.h
${CORE_ROOT}/large_image/VipsBackend.h
${CORE_ROOT}/domain/EntityIntro.h
${CORE_ROOT}/domain/Project.h
${CORE_ROOT}/workspace/ProjectWorkspace.h
${CORE_ROOT}/persistence/PersistentBinaryObject.h
${CORE_ROOT}/persistence/AnimationBinary.h
${CORE_ROOT}/persistence/EntityPayloadBinary.h
${CORE_ROOT}/persistence/JsonFileAtomic.h
${CORE_ROOT}/persistence/EntityBundleStore.h
${CORE_ROOT}/persistence/AnimationBundleStore.h
${CORE_ROOT}/persistence/AsyncProjectWriter.h
${CORE_ROOT}/animation/AnimationEvaluator.h
${CORE_ROOT}/animation/AnimationSampling.h
${CORE_ROOT}/depth/DepthService.h
${CORE_ROOT}/net/ModelServerClient.h
@@ -47,4 +66,44 @@ target_link_libraries(core
${QT_PACKAGE}::Core
${QT_PACKAGE}::Gui
${QT_PACKAGE}::Network
${QT_PACKAGE}::Concurrent
)
# libvips:优先 IMPORTED_TARGET;失败则用 pkg-config 变量(部分环境下更稳)
set(LT_VIPS_ENABLED OFF)
if(LT_WITH_VIPS)
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(VIPS_PC IMPORTED_TARGET vips)
if(TARGET PkgConfig::VIPS_PC)
target_compile_definitions(core PRIVATE LT_HAVE_VIPS=1)
target_link_libraries(core PUBLIC PkgConfig::VIPS_PC)
set(LT_VIPS_ENABLED ON)
message(STATUS "libvips: enabled via IMPORTED_TARGET (LT_HAVE_VIPS)")
else()
pkg_check_modules(VIPS_LEGACY QUIET vips)
if(VIPS_LEGACY_FOUND)
target_compile_definitions(core PRIVATE LT_HAVE_VIPS=1)
target_include_directories(core PRIVATE ${VIPS_LEGACY_INCLUDE_DIRS})
target_link_directories(core PUBLIC ${VIPS_LEGACY_LIBRARY_DIRS})
target_link_libraries(core PUBLIC ${VIPS_LEGACY_LIBRARIES})
if(VIPS_LEGACY_CFLAGS_OTHER)
separate_arguments(_vips_cflags UNIX_COMMAND "${VIPS_LEGACY_CFLAGS_OTHER}")
target_compile_options(core PRIVATE ${_vips_cflags})
endif()
set(LT_VIPS_ENABLED ON)
message(STATUS "libvips: enabled via pkg-config variables (LT_HAVE_VIPS)")
endif()
endif()
endif()
endif()
if(LT_WITH_VIPS AND NOT LT_VIPS_ENABLED)
message(
WARNING
"未找到 libvips(无 pkg-config 模块 vips),已关闭 LT_HAVE_VIPS,大图仍走 Qt 解码。\n"
" Debian/Ubuntu: sudo apt install pkg-config libvips-dev\n"
" Fedora: sudo dnf install pkgconf-pkg-config vips-devel\n"
" 安装后终端执行: pkg-config --modversion vips (应打印版本号)\n"
" 若已安装仍失败: export PKG_CONFIG_PATH=\"/usr/lib/x86_64-linux-gnu/pkgconfig:\$PKG_CONFIG_PATH\""
)
endif()