Files
XCEngine/docs/issues/Editor模块_CMake直链Release版XCEngine库破坏配置一致性3.28.md

2.2 KiB
Raw Blame History

Editor模块 CMake直链Release版XCEngine库破坏配置一致性

1. 问题定义

当前 editor 可执行目标的链接方式仍然是硬编码文件路径:

当前写法:

  • target_link_libraries(... ${CMAKE_CURRENT_SOURCE_DIR}/../build/engine/Release/XCEngine.lib)

这不是正常的 CMake target 依赖,而是直接绑死到一个磁盘上的 Release 静态库文件。


2. 当前影响

这会导致几个非常实际的问题:

  1. Debug editor 也可能链接到旧的 Release 版引擎库
  2. editor 对 XCEngine 目标没有真实依赖关系
  3. 引擎库变更后editor 可能不会按正确配置自动重建
  4. Debug / Release 混链风险被隐藏

当前本地状态就能看到:

  • build/engine/Debug/XCEngine.lib
  • build/engine/Release/XCEngine.lib

两者时间戳和体积明显不同,但 editor 目标仍然硬连 Release 文件。


3. 为什么这是重大缺陷

这条会直接污染后续 Viewport 对接的开发过程:

  • 你以为 editor 正在吃最新的 Renderer / RHI 改动
  • 实际上它可能仍在链接旧的 Release 库

这样一来:

  • viewport 接入问题很难调
  • Debug 行为和 Release 行为可能不一致
  • CI / 新机器 / 干净构建环境也更容易炸

它不是“代码风格问题”,而是构建依赖关系本身不正确。


4. 建议方案

应改成标准 CMake target 依赖:

  1. editor 直接链接 XCEngine
  2. 不再手写 ../build/engine/Release/XCEngine.lib
  3. 由 CMake 自己处理 Debug / Release / RelWithDebInfo 的库选择
  4. editor/include 路径和 link 关系都从 target 传播,而不是继续手写 build 输出路径

5. 验收标准

完成后至少应满足:

  1. editor 目标通过 target_link_libraries(... XCEngine) 链接引擎
  2. Debug editor 自动吃 Debug XCEngine
  3. Release editor 自动吃 Release XCEngine
  4. 修改 engine 后重新构建 editor 时,依赖关系正确生效
  5. 干净构建环境不依赖预先存在的某个磁盘库文件

6. 优先级

中高。

它未必第一时间阻塞面板 UI 开发,但会显著污染后续所有 viewport / renderer 联调结果,建议尽快修。