2.2 KiB
2.2 KiB
Editor模块 CMake直链Release版XCEngine库破坏配置一致性
1. 问题定义
当前 editor 可执行目标的链接方式仍然是硬编码文件路径:
当前写法:
target_link_libraries(... ${CMAKE_CURRENT_SOURCE_DIR}/../build/engine/Release/XCEngine.lib)
这不是正常的 CMake target 依赖,而是直接绑死到一个磁盘上的 Release 静态库文件。
2. 当前影响
这会导致几个非常实际的问题:
- Debug editor 也可能链接到旧的 Release 版引擎库
- editor 对
XCEngine目标没有真实依赖关系 - 引擎库变更后,editor 可能不会按正确配置自动重建
- Debug / Release 混链风险被隐藏
当前本地状态就能看到:
build/engine/Debug/XCEngine.libbuild/engine/Release/XCEngine.lib
两者时间戳和体积明显不同,但 editor 目标仍然硬连 Release 文件。
3. 为什么这是重大缺陷
这条会直接污染后续 Viewport 对接的开发过程:
- 你以为 editor 正在吃最新的 Renderer / RHI 改动
- 实际上它可能仍在链接旧的 Release 库
这样一来:
- viewport 接入问题很难调
- Debug 行为和 Release 行为可能不一致
- CI / 新机器 / 干净构建环境也更容易炸
它不是“代码风格问题”,而是构建依赖关系本身不正确。
4. 建议方案
应改成标准 CMake target 依赖:
- editor 直接链接
XCEngine - 不再手写
../build/engine/Release/XCEngine.lib - 由 CMake 自己处理 Debug / Release / RelWithDebInfo 的库选择
- editor/include 路径和 link 关系都从 target 传播,而不是继续手写 build 输出路径
5. 验收标准
完成后至少应满足:
editor目标通过target_link_libraries(... XCEngine)链接引擎- Debug editor 自动吃 Debug
XCEngine - Release editor 自动吃 Release
XCEngine - 修改 engine 后重新构建 editor 时,依赖关系正确生效
- 干净构建环境不依赖预先存在的某个磁盘库文件
6. 优先级
中高。
它未必第一时间阻塞面板 UI 开发,但会显著污染后续所有 viewport / renderer 联调结果,建议尽快修。