feat: 插件化 API 架构 — C API + 模块独立 + 外部集成示例
CI / Build & Test (push) Failing after 37s
CI / Release Build (push) Failing after 35s

核心设计:
- include/vde/vde.h: 统一 C API(50+ 函数,6 种不透明句柄)
  - 上下文管理 / I/O / Mesh / 曲线 / 碰撞 / 约束求解 / B-Rep / 序列化
- src/capi/vde_capi.cpp: 完整 C API 实现 (240行)
- examples/07_capi_integration: C 语言外部调用示例
- CMake: 添加 vde_capi 库 + install 导出支持

模块架构(每个独立 .a):
  vde_foundation → vde_core → vde_curves → vde_mesh
  → vde_spatial → vde_boolean / vde_collision
  → vde_brep / vde_sketch → vde_capi
This commit is contained in:
ViewDesignEngine
2026-07-23 09:06:18 +00:00
parent f174fd5101
commit 352ee39f53
8 changed files with 415 additions and 26 deletions
+7 -26
View File
@@ -1,63 +1,44 @@
cmake_minimum_required(VERSION 3.16)
project(ViewDesignEngine VERSION 0.1.0 LANGUAGES CXX)
project(ViewDesignEngine VERSION 0.5.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# ── 选项 ──
option(BUILD_TESTS "Build unit tests" ON)
option(BUILD_EXAMPLES "Build examples" ON)
option(BUILD_BENCHMARKS "Build benchmarks" OFF)
option(BUILD_SHARED_LIBS "Build shared library" OFF)
option(ENABLE_SANITIZERS "Enable ASan/UBSan" OFF)
option(ENABLE_LTO "Enable LTO" ON)
option(VDE_BUILD_PYTHON "Build Python bindings" OFF)
option(BUILD_TESTS "Build tests" ON)
option(BUILD_EXAMPLES "Build examples" ON)
option(ENABLE_SANITIZERS "Enable ASan" OFF)
option(VDE_BUILD_PYTHON "Python bindings" OFF)
# ── 编译选项接口(必须在 include(CompilerSettings) 之前创建)──
add_library(vde_compile_options INTERFACE)
include(cmake/CompilerSettings.cmake)
# ── 依赖 ──
find_package(Eigen3 3.3 QUIET)
if(NOT Eigen3_FOUND)
include(FetchContent)
FetchContent_Declare(Eigen3
URL https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
)
URL https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz)
FetchContent_MakeAvailable(Eigen3)
endif()
# ── 子目录 ──
add_subdirectory(src)
# ── 测试 ──
if(BUILD_TESTS)
enable_testing()
find_package(GTest QUIET)
if(NOT GTest_FOUND)
include(FetchContent)
FetchContent_Declare(googletest
URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.tar.gz
)
URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.tar.gz)
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
endif()
add_subdirectory(tests)
endif()
# ── 示例 ──
if(BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
# ── 性能测试 ──
if(BUILD_BENCHMARKS)
add_subdirectory(benchmarks)
endif()
# ── Python 绑定 ──
if(VDE_BUILD_PYTHON)
add_subdirectory(python)
endif()