类似于Maven的C++依赖管理?

web*_*ste 84 c++ build dependency-management maven

假设我有一个C++项目,它被分成几个子项目.子项目都生成一个DLL,不同的开发团队在每个子项目上工作.现在,如果我想构建主项目,有没有办法避免必须自己构建所有子项目?

简而言之,我正在寻找一些能够以与Maven为Java相似的方式进行依赖管理(即二进制文件和头文件)的东西.

事实上,我尝试使用Maven,但这很麻烦,因为我必须手动创建包,而且很频繁,Maven错过了最新的更改.此外,运行编译有点像黑客,因为我必须从Maven中调用NAnt(我使用NAnt的功能直接构建Visual Studio解决方案).

有关如何做到这一点的任何提示和想法?

ova*_*nes 34

初答:我建议使用CMake.它是一个多平台的make文件生成器(也生成Visual Studio或Eclipse CDT项目).

http://www.cmake.org/

我用它做了很好的经验.我最喜欢它的是生成通用项目结构的能力.因此,您通常可以包含子项目查找单元测试等,而无需每次都更改脚本.

他们还有很多关于如何找到项目所需的预安装构建库的模块(如Boost,QT等)


更新:与此同时,还有一些努力为C++引入包管理.一些值得关注的项目:

  • conan.io与主要构建工具集成:
    • CMake的
    • 视觉工作室
    • Makefile文件
    • 的XCode
    • ...
  • cpm基于CMake
  • 牧童

请注意,@RAM在评论中指出cpm不再被主动维护.

  • 几个月前我使用了CMake,确实,检查预安装的库工作得非常好.但是,其他二进制依赖项(即来自我的子项目的依赖项)无法轻松管理.我错过了什么吗? (7认同)
  • @weberste,实际上没有类似C/C++的maven工具.开发人员尝试使用apt-get like工具处理依赖关系管理. (3认同)
  • CMake 是一个构建系统,查找依赖项的能力有限。它不是 NPM、Cargo 等意义上的依赖管理器。 (2认同)

car*_*aez 15

对于依赖关系管理,它存在一个新项目(它是一家初创公司),它正在实现这种类型的工具:https://www.biicode.com/(一个C++依赖管理器).你可以添加你的依赖项,它应该工作.

目前,该项目的名称是conan.io,它们被JFrog收购.

更新:该项目已经死了 ......不幸的是,似乎创业公司无法获得足够的高级付费客户,但服务器似乎工作正常......

UPDATE2:似乎有一个替代项目:conan.io(感谢@mucaho)


car*_*vin 8

我推荐以下高级构建系统:


Ric*_*ler 5

如果您只想要依赖管理,请尝试Ivy,它与Ant很好地集成(我假设NAnt可以基于此博客进行相同的操作,该博客是从常春藤网站链接的).

还有Byldan,Maven的.Net版本.不知道这对你有多好.


Mar*_*wis -5

我建议使用所有构建依赖系统之母:make。

  • make 实际上是每个人都希望通过查看构建自动化系统来避免/替换的东西 (8认同)