Skip to content

o.shared="shared"api无法控制构建target类别 #50

Open

Description

@tz12323

目前 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions