gpt4 book ai didi

c++ - 处理 C++ 依赖项(跨平台)

转载 作者:可可西里 更新时间:2023-11-01 16:42:39 24 4
gpt4 key购买 nike

我的印象是这个问题被问了一百次,但从未完全回答过。

我正在做一个小项目,在某个时候应该针对三大 PC 平台(Windows、Mac 和 GNU/Linux)发布,所以过早地锁定技术不是一个好主意。幸运但也不幸的是,目前,在早期开发期间,我们只针对 32 位 Windows。

在代码层面上,如果您选择了正确的库,跨平台开发相对容易。在多个平台上构建软件也相对简单,我正在考虑使用 GYP 或 CMake。

问题是依赖关系。要构建项目,您需要:SDL、SDL_image、SDL_ttf、iconv、libxml2、libxmlmm、sigc++、wxWidgets、glew、bullet、openALsoft 以及稍后可能添加的更多内容。

到目前为止,我找到了三个选项:

  1. checkin 源并将其构建为项目的一部分
  2. checkin 二进制文件
  3. 管理源代码树之外的依赖

第一个似乎有点矫枉过正,因为您基本上需要维护库的分支和自定义构建系统。

第二个选项听起来像是您只针对一个或两个平台时应该做的事情。但是,如果您计算所有不同的目标,包括 32/64 位变体,这也会开始膨胀到几乎无法控制的程度。

第三个选项取决于环境。如果您让您的开发人员手动处理依赖项,您将永远无法休眠。仅仅构建每个依赖项并准备好使用几乎是不可能的。更不用说您无法确保每个开发人员都使用正确的版本。

如果你看看其他语言,它们解决问题的方式不同。使用 npm、marvin 或 phing 等系统,您只需在项目中维护一些配置文件,然后工具即可获取所需的任何依赖项。

我正在考虑集中构建依赖项,将它们打包成 zip/deb/rpm/whatever 包并将它们放入存储库中。然后每个开发人员都会在构建之前将其平台的依赖项复制到存储库中(但不 checkin )。这最好作为预构建步骤自动完成。

我特别不想要额外的构建系统。我环顾四周,唯一可以远程执行我想要的操作的可能是 Ivy。但要么是遗漏了什么,要么是 Ivy 完全过度设计了这个问题。是否存在解决此问题的简单方法?

我正在努力打造自己的。

最佳答案

我建议不要自己构建。

我们使用 ant/ivy/Hudson 来自动化我们的跨平台(Windows 和 Linux)构建。我们还使用 Nexus (Maven) 作为我们的工件存储库,其中包含我们的第 3 方库的平台特定构建以及我们自己的应用程序。 Hudson 与 Perforce(我们的软件存储库)完美集成。

我们还在为所有内容创建单独的 32 位和 64 位工件,而 ant/ivy 将使这一切变得更加容易。

这对我们来说效果很好。

关于c++ - 处理 C++ 依赖项(跨平台),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16338072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com