110 lines
4.4 KiB
CMake
110 lines
4.4 KiB
CMake
# 模块: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
|
|
${CORE_ROOT}/library/EntityJson.cpp
|
|
${CORE_ROOT}/library/ToolJson.cpp
|
|
${CORE_ROOT}/library/ResourceLibraryProvider.cpp
|
|
${CORE_ROOT}/library/OnlineResourceLibraryProvider.cpp
|
|
${CORE_ROOT}/eval/ProjectEvaluator.cpp
|
|
)
|
|
|
|
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
|
|
${CORE_ROOT}/library/EntityJson.h
|
|
${CORE_ROOT}/library/ToolJson.h
|
|
${CORE_ROOT}/library/ResourceLibraryProvider.h
|
|
${CORE_ROOT}/library/OnlineResourceLibraryProvider.h
|
|
${CORE_ROOT}/eval/ProjectEvaluator.h
|
|
)
|
|
|
|
add_library(core STATIC
|
|
${CORE_SOURCES}
|
|
${CORE_HEADERS}
|
|
)
|
|
|
|
target_include_directories(core
|
|
PUBLIC
|
|
${CORE_ROOT}
|
|
)
|
|
|
|
target_link_libraries(core
|
|
PUBLIC
|
|
${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()
|