57 lines
2.7 KiB
Markdown
57 lines
2.7 KiB
Markdown
# 构建系统
|
||||
|
|
|
|||
|
|
**结论:现在统一用 CMake 构建,不再使用 Visual Studio 工程文件(`.vcxproj`/`.sln` 已删除)。**
|
|||
|
|
|
|||
|
|
## 基本命令
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 在 SourceCode/Code2026 目录
|
|||
|
|
cmake --preset R250 # 配置(示例:AutoCAD 2025-2026)
|
|||
|
|
cmake --build --preset R250 # 编译
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- CMake ≥ 3.21,生成器 `Visual Studio 18 2026`,架构 `x64`。
|
|||
|
|
- 工具集按 preset 指定(如 `v143` / `v142` / `v141` …)。
|
|||
|
|
- 启用 `/MP` 多进程编译;Release 默认 `_NDEBUG`。
|
|||
|
|
|
|||
|
|
## 配置预设(`cmakepresets.json`,13 套)
|
|||
|
|
|
|||
|
|
| 分组 | preset | 说明 |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| AutoCAD | `R180 R190 R200 R210 R220 R230 R240 R243 R250 R260` | ARX 18~26(CAD 2010~2027) |
|
|||
|
|
| 中望CAD | `Z2023 Z2024 Z2025 Z2026` | ZRX 2023~2026 |
|
|||
|
|
|
|||
|
|
关键 cache 变量:
|
|||
|
|
- `CAD_SDK_ROOT`:`arx/` 或 `zrx/`(相对 `SourceCode/Code2026` 上一级的上一级)。
|
|||
|
|
- `DEP_LIB_ROOT` / `DEP_INC_ROOT`:`../dep_lib` / `../dep_inc`。
|
|||
|
|
- `PRODUCT=ENV_2025_V6_S0`、`TRIAL_YEAR=2026`。
|
|||
|
|
- `GENERATE_BIN_DIR` / `GENERATE_LIB_DIR`:输出到 `bin/Code2026`、`lib/Code2026`。
|
|||
|
|
|
|||
|
|
C++ 标准自动切换:ARX 26→C++20;ARX 25/24 与 ZRX→C++14;更老版本→C++03/98。
|
|||
|
|
|
|||
|
|
## 构建脚本
|
|||
|
|
|
|||
|
|
- `cmake/functions.cmake`:核心封装
|
|||
|
|
- `add_custom_module(dir folder)`:注册子模块(自动 `add_subdirectory` + 设置 FOLDER)。
|
|||
|
|
- `target_link_objectarx(target EXT)`:链接 CAD SDK 与全局头。
|
|||
|
|
- `simple_link_cad_sdk`:自动区分 ARX / ZRX。
|
|||
|
|
- `set_encryption_definitions_and_output_path`:**授权模式**,生成 `BAL_REMOTE` 与 `TRIAL_YEAR` 两种版本。
|
|||
|
|
- `set_debug_post_build`:调用 `copyarx.exe` 做 post-build 部署。
|
|||
|
|
- `cmake/ThirdPartyDeps.cmake`:定义 `ThirdParty::ARX` / `ZRX` / `SQLite3` / `cURL` / `TG` / `modernGlue` / `BitAnswer` 等接口目标。
|
|||
|
|
- 顶层 `cmakelists.txt`:注册所有模块并组织 `FOLDER`(`SH/Core`、`SH/Pipe` …)。
|
|||
|
|
|
|||
|
|
## 授权 / 加密
|
|||
|
|
|
|||
|
|
- `CoreCommand` 通过 `get_encryption_modes()` 生成两种产物:
|
|||
|
|
- `BAL_REMOTE`(网络锁 / 正式版)
|
|||
|
|
- `TRIAL_YEAR`(1 年期试用版)
|
|||
|
|
- 依赖 **BitAnswer**(加密狗库),加密表由 `utility/generateEncryptionTable` 生成。
|
|||
|
|
|
|||
|
|
## 部署与打包
|
|||
|
|
|
|||
|
|
- **部署**:`sh_output_path.json`(ACAD)/ `zw_output_path.json`(中望)定义从 `bin/Code2026` 拷贝到安装目录 `c:\ShangHuaSoft\Envi3D-2026-M`;由 `copyarx.exe` 执行。
|
|||
|
|
- **打包**:`autoCompile/` 内含 Inno Setup(`*.iss`) + Python(`SHSCompile.py`) + 多个 `.bat`,覆盖 ACAD/中望、1年期/加密版、以及客户专版(中广核、国能集团等)。
|
|||
|
|
|
|||
|
|
## .gitignore 要点
|
|||
|
|
|
|||
|
|
忽略:`Arx/`、`cmake_output/`、`bin/`、`lib/`,以及所有 VS 中间产物(`*.obj/*.pdb/*.user/.vs` 等)。
|