可移植构建环境
Portable Build Environment
我正试图弄清楚如何定义我的构建环境。
- 我有多个可重复使用的独立模块,它们是根据自己的发布时间表开发的
- 我也有多个客户,每个客户都有自己的自定义构建应用程序,使用每个可重用模块的不同版本
- 我的构建系统使用g++/makefiles
-
我需要使它可移植到Cygwin和Linux。
-
假设每个模块/客户都是用自己的Makefile构建的,我如何配置我的Makefile以动态地指向正确版本的依赖项?
-
我如何/应该设置我的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,您可以为顶部目录和基本构建系统提供一个主存储库,并为每个子项目提供子模块。
至于构建,我建议您使每个子项目独立,然后按依赖关系顺序在顶级容器项目中列出子项目。每个子项目都安装到一个特定的目录中,顶级容器项目将标志传递给每个项目,告诉他们该安装目录的位置,这样他们就可以找到头文件和库。使此(临时(安装目录与实际安装目录镜像,以便在需要时轻松复制到实际安装目录。
如果不是所有文件都应该从临时安装目录复制到实际安装目录,请让每个子项目生成一个文件,该文件告诉应该复制哪些文件。
对于独立于平台的构建系统,我建议使用CMake。它可以处理用于构建的配置和生成makefile,用于比您可能需要的更多的平台和编译器。
我希望这些对你来说都有意义。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- docker 构建失败:无法设置环境变量
- 在 Azure DevOps 构建管道中使用英特尔C++编译器为 Linux 环境构建C++代码
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 使用 Mingw 构建环境C++?
- 什么是运行英特尔线程构建模块的 XCode 8 环境变量
- 阿尔卑斯构建环境中的 C++ 模板
- 如何在 conda 虚拟环境中安装 c++ 构建工具以与 cython/setproctitle 一起使用
- 如何构建 Caffe 框架 XCode 6.2,iOS 8.3 环境
- 如何为 Windows 预安装环境 (Windows PE) 构建应用程序
- 在没有 cygwin 环境的 Windows 中运行 cygwin 构建的 exe
- 如何将环境变量引入构建中以在#ifdef中使用
- Linux环境下构建32位和64位应用程序(C++)
- SCons使用多个环境构建
- 使用MinGW-w64和Boost.Build的C++构建环境
- c++应用程序在不同环境中的自动构建
- 如何在单个Windows环境中准备生成.dll和unix .so的构建作业
- 可移植构建环境
- 如何构建面向 64 位环境的解决方案