你推荐什么GNU替代?

tue*_*ist 10 c++ command-line build-process makefile

想象一下,您可以自由选择像GNU make这样的工具来实现新的C++项目.你会选择什么?有没有可用的替代品?

它应该/是

  • 命令行界面
  • "容易明白
  • 易于设置默认的c ++项目
  • 可能支持src/binJava的常见分离
  • 可能不会向其他软件/库添加太多依赖项
  • 平台独立()
  • 特征:
    • 构建规则/模板,如make,但以人类可读的方式
    • 如果没有其他"Makefile",则递归地抓取目录并应用规则
    • 异常配置

注意:

GNU make没什么问题.我只是不喜欢它的语法,这些年来增长的所有东西和愚蠢的递归都会产生问题.我现在用gmake多年了.

sou*_*rge 19

我用cmake,我很高兴我做了转换.

编辑

维基百科文章中的功能列表:

  • 配置文件是CMake脚本,它使用专用于软件构建的编程语言
  • 内置于C,C++,Fortran和Java的自动依赖性分析
  • 通过CMake脚本语言支持SWIG,Qt
  • 内置支持许多版本的Microsoft Visual Studio,包括版本6,7,7.1,8.0和9.0
  • 为Eclipse CDT生成构建文件(C/C++开发工具)
  • 使用传统时间戳检测文件内容更改,
  • 支持并行构建
  • 交叉编译
  • 所有依赖关系的全局视图,使用CMake输出graphviz图
  • 支持跨平台构建,并且已知可以继续使用
    • Linux和其他POSIX系统(包括AIX,*BSD系统,HP-UX,IRIX/SGI和Solaris)
    • Mac OS X.
    • Windows 95/98/NT/2000/XP,Windows Vista和MinGW/MSYS
  • 与DART(软件),CDash,CTest和CPack集成,这是一组用于软件测试和发布的工具

但说实话:几乎任何东西都比gnu工具链更好.

  • CMake是唯一能够生成**真实**Visual Studio项目的工具,即不能调用某些外部工具的makefile项目. (2认同)

Cat*_*lus 9

SConswaf很好(好吧,恕我直言)构建系统,并且只依赖于Python.


Bry*_*ley 8

"gnu make"怎么样?

你问了类似的东西,但没有说明gnu make不支持你想要的功能.


Adr*_*iuk 8

Boost.Jam

它具有您命名的功能

  • 命令行界面;
  • 简单;
  • 它来自C++库集合Boost,因此它对C++有很好的支持(并且它也不仅限于C++);
  • 它将可执行文件存储在bin目录下的位置,具体取决于您命令的构建请求.如果您使用gcc 4.3.2,那么您将获得可执行文件
    • bin/gcc-4.3.2/debug - 执行时 bjam
    • bin/gcc-4.3.2/release - 执行时 bjam release
    • bin/gcc-4.3.2/release/inlining-off/threading-multi - 执行时 bjam release inlining=off threading=multi
    • bin/gcc-4.3.2/release/threading-multi- bjam release inlining=full threading=multi因为inlining = full是发布的默认值.
  • 它不需要完整的Boost库集合,只需要Boost.Build和Boost.Jam;
  • 平台独立;
  • Jamfile语法很简单,但功能强大;
  • 你可以将构建配置划分为子目录中的许多Jamfiles.


Che*_*evy 7

如果不是全部满足您的要求,CMake应该回答最多.

  • 它会为您生成Makefile.

  • 它具有良好的特定于域的原语,以及您需要执行特殊操作的简单语言.

  • 它解决了递归make的大部分问题(参见递归make被认为是有害的文件).

  • 它使用源外构建,因此您可以bin / src分离.

我发现它易于编写,易于维护和快速构建.

......加:

  • 它是跨平台的.

  • 使用CText和CDash,它具有设置持续集成服务所需的功能.

又见这个答案递归制作-朋友还是敌人?