gpt4 book ai didi

c++ - 可移植构建环境

转载 作者:行者123 更新时间:2023-11-28 06:11:06 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何定义我的构建环境。

  • 我有多个可重复使用的独立模块,它们是根据自己的发布时间表开发的。
  • 我还有多个客户,每个客户都有自己的定制应用程序,使用每个可重用模块的不同版本。
  • 我正在为我的构建系统使用 g++/makefiles
  • 我需要使其适用于 Cygwin 和 Linux。

    1. 假设每个模块/客户都使用自己的 Makefile 构建,我如何配置我的 makefile 以动态指向正确的依赖版本?

    2. 我可以/应该如何设置我的 CM 存储库以允许每个项目和模块的开发团队独立工作,而无需在每次创建新分支时进行大量手动配置?

      <

我正在使用以下目录结构,但它似乎不足以满足我的需求。

./fooLibrary
./include
./lib
./barLibrary
./include
./lib
./plugins
./pluginX
./include
./lib
./pluginY
./include
./lib
./pluginZ
./include
./lib
./projects
./customer1
./bin
./obj
./projects/customer2
./bin
./obj
./projects/unittests
./bin
./obj

我一直在尝试为每个模块创建一个版本化的安装目录,每个模块都有自己的 include/lib 目录,但这似乎有点过头了,而且我从来都不喜欢构建的版本化产品。即

    ./fooLibrary
./src
./1.0
./include
./lib
./1.1
./include
./lib
./1.2
./include
./lib
./1.2.1
./include
./lib

我只是想让开发团队保持简单。

编辑:重要的是要注意我还没有任何工作。我觉得我正在努力做正确的事情,但我在努力把它做对的过程中挣扎。

最佳答案

关于 CM 部分,如果您使用的是 GIT,则可以为顶级目录和基础构建系统拥有一个主存储库,并且 submodules对于每个子项目。

至于构建,我建议你让每个子项目独立,然后按照依赖顺序在顶级容器项目中列出子项目。每个子项目都安装到一个特定的目录中,顶级容器项目将标志传递给每个项目,告诉他们这个安装目录的位置,以便他们可以找到头文件和库。使此(临时)安装目录成为实际安装目录的镜像,以便在需要时轻松复制到实际安装目录。

如果不是所有文件都应该从临时安装目录复制到实际安装目录,让每个子项目生成一个文件,告诉应该复制哪些文件。

对于独立于平台的构建系统,我建议 CMake .它可以处理配置和生成用于构建的 makefile,适用于比您可能需要的更多平台和编译器。

我希望以上内容对您有所帮助。

关于c++ - 可移植构建环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31253860/

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