【问题标题】:Editing open-source libraries [closed]编辑开源库 [关闭]
【发布时间】:2016-06-26 18:53:53
【问题描述】:

我目前正在开发一个 C++ 库,以使我的 OpenGL 游戏开发团队的生活更轻松。我正在使用 GLM 来处理数学。

假设我适当地记下了原始创建者并在文件中保留了任何许可信息,是否可以重命名 GLM 命名空间以匹配我在库中使用的命名空间?这将使最终使用该库更加清洁,而不会向用户公开多个不同的库/命名空间。

如果这不合法/不道德,我能做些什么来向命名空间添加别名并只公开别名吗?

谢谢。

【问题讨论】:

  • namespace your_namespace { using namespace glm; ... }?
  • 这不是这里要求的编程问题。询问遗留问题是题外话。
  • @πάνταῥεῖ:与其说是遗产,不如说是合法性问题。鉴于法律语言本质上是一种用散文编写的弱形式化编程形式(if 人这样做 $this and $that then $law 被违反),所以我认为这实际上是一个编程问题;)
  • 我投票决定将此问题作为题外话结束,因为许可问题对于 SO 来说是题外话。

标签: c++ opengl open-source glm-math


【解决方案1】:

GLM License

上面写着:

[...] 不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、 分发、再许可和/或出售软件的副本 [...]

这是唯一的条件:

以上版权声明及本许可声明为 包含在软件的所有副本或大部分内容中。

还有一个限制:

将本软件用于军事目的,即表示您选择 兔子不开心。

所以你可以随意重命名命名空间。

如果您关心兔子,请不要将其用于军事目的。

【讨论】:

  • 感谢您的帮助。由于这是我们第一次使用一些开源库制作商业项目,所以我必须确定。
  • 这怎么可能强制执行?那么它是翻转还是对军事用途的真正限制?
【解决方案2】:

或者,您总是可以限定命名空间:

namespace myName{
    using namespace X;
}

这会使myName::itemX::item 相同

【讨论】:

  • 这意味着用户可以使用myName::itemX::item。我只想访问myName::item,而不是X::item
  • @DingusKhan 我理解,但是如果您因为许可证而无法更改命名空间,那么对其进行限定就可以了。
猜你喜欢
  • 2011-10-17
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多