Ili*_*ski 28 c++ portability build-process
我正在为C++项目寻找一个易于维护的便携式构建系统.主要平台应包括Windows(Visual Studio 8+)和Linux(gcc); Cygwin可能是一个优势.我们正在考虑两种主要的可能性:CMake和Boost.Jam.SCons也可以选择,但我还没有调查过.CMake和Boost.Jam似乎具有以下特征:
CMake的:
Boost.Jam:
什么是其他可能性以及经验之后的真正优势?什么构建系统可以在途中创建解决方案?
Art*_*yom 15
( - )需要每个项目文件夹中的配置文件
这是不正确的,你只需要传递更大的内容,如:
add_program(foo src/foo.cpp src/main.cpp)
Run Code Online (Sandbox Code Playgroud)
很少有关于Boost.Jam的说明 - 首先它不是Boost.Jam - bjam本身相当无用,你正在寻找的是Boost.Build,它是一组Jam宏,它使bjam变得有用.
现在,我与两者合作,我必须承认,Boost.Build不适合Boost本身之外的任何严肃项目.需要找到图书馆?不需要找头?不能.需要做一些简单构建之外的东西 - 你不知道怎么做它作为BB文档...完全没用,可能覆盖BB的10%.所以大多数情况下你需要在BB邮件列表中提问并......
所以,如果你有一些复杂的项目 - 你需要做更多的事情然后简单的编译和链接,远离Boost.Build.
因此,如果您需要支持MSVC,我今天发现CMake是唯一可行的选择.
我不是说CMake是非常好的系统,它有很多问题,但它主要适用于跨平台开发(如果你需要支持MSVC).
如果您不关心MSVC并对MinGW感到满意......那么请看一下autotools.
关于Scons - 它们仍然不如CMake成熟.
Cyg*_*gon 13
这有点咆哮,但我会尽量保持客观,只报告我的经历:
我已经尝试了几次CMake,我已经接近达到这样的程度,我将自愿为每个构建环境维护单独的项目文件或滥用另一种语言的构建系统(Ant,NAnt,MSBuild等)来编译和打包我的C++项目.
CMake,因为它是:
我个人认为,即使有人想故意设计最糟糕的跨平台构建系统,也很难比CMake更糟糕.
我对Boost.Build没有任何经验,它可能也有同样严重的缺点,但我能说的最好的关于CMake的是,如果你唯一的关心是以某种方式建立一些源文件,它可以完成工作 - - 尽管开发人员和图书馆/应用程序消费者非常痛苦.
我在premake4上有过一些很好的经历:http://industriousone.com/premake
更新
我仍然喜欢预制,但经过一段时间的努力,我觉得有义务列出我在其中发现的一些缺点:
我会在QMake上关注@Akusete,这是我现在选择的个人工具.优点和缺点也有点个人化,但在这里他们是:
mkspec,用同qmake一种语言编写);app,lib等,但它是一个有点麻烦建立,比如,共享和静态库版本在单通或禁用预编译头为一个源文件.这绝对是可以实现的,但需要一些谷歌搜索,看起来很脏;QT -= core gui行很容易覆盖)获得在简单到中等项目上快速完成的工作,但仍然留下"该死的感觉,它本来可以用更简单的方式完成!" 当应用于复杂的任务时.