目前 dep-cmake 中的 o.shared="shared" 仅用于向 mcpp 标注这个依赖产出是共享库类型,只是一个类型声明标记,并不能控制底层 CMake 子项目是编译成静态库还是动态共享库。 子项目最终是静态库还是 shared,完全由子项目自身 CMake 逻辑、 BUILD_SHARED_LIBS 变量决定,不受这个参数控制。 这造成了用户的预期偏差:用户设置 .shared(true) 后,会以为插件会自动控制 CMake 产出动态库,但实际上该参数仅仅影响 mcpp 侧如何看待这个库,不会向 cmake 传递 BUILD_SHARED_LIBS=ON/OFF 。 期望: 1. 新增选项,自动向子 CMake 传递 -DBUILD_SHARED_LIBS ; 2. 和现有的 shared 标记做解耦: - shared :注解,告诉 mcpp 这个产物是共享库(链接时的行为提示) - 新增例如 .build_shared_libs(bool) :控制 CMake 构建行为,自动追加 cmake 参数 BUILD_SHARED_LIBS=ON / OFF 3. 保持向后兼容,不改动已有 o.shared 的现有语义,避免破坏已有脚本。
Activity