构建 – CMake想知道的新手有什么灰尘?

我已经做了很多项目和很多不同的构建系统和CI工具.最近,我已经暴露在偶尔有挑战性的任务中添加一个基于自动工具的环境适合大小的C应用程序.虽然我喜欢最终用户的易用性,但我并不喜欢与开发人员一起处理m4和所有的auto *工具.

我在业余时间正在开展一个相当大的边工程,并决定要采取CMake进行测试.由于我刚刚开始,我显然计划挖掘文档/ FAQ / wiki /等等.并通过做学习. BTW,我把钱用于“掌握CMake”书,但我在亚马逊上发现的评论足以让我认为这可能不值钱.所有这些都说,在任何新事物中,经常会有“迟疑”,一个新来者经常会嘲笑老专家早已学会避免.我想知道这些是基于人们对CMake的经验,而且我希望通过在这里询问来减少我的学习痛苦.

编辑:我应该指出,我正在计划在Linux上主要构建其他UN * X变体. Windows并不是我的POV的关注点.这是一个大型服务器端应用程序,具有用于运算符的Web和CLI界面,用于自动化/与OSS工具集成的北向REST接口和用于CPE的SOAP南向接口.我将需要很多第三方图书馆和应用程序,以使这一切都有效,除非我想在未来10年内手动构建这一切. 🙂

首先,我认为CMake是一个很好的构建工具.在我看来,对于多平台构建来说,我们是最好的支持,并且有一个强大的机制来查找第三方库.结合CPack它甚至提供合理的包装和安装选择.一些提示和可能的问题:

>始终致力于源代码构建:一个明显的一个:为源代码构建设计的项目可能很难将其构建为源代码.所以,如果你可以从一开始就设计出来,那就是针对源代码的构建.
>语法:语法可能会有很多奇怪的怪癖,虽然从2.6和2.8版本起越来越好.
>缓存变量. CMake跟踪变量和设置的缓存,有时这可能是重建某些问题.尝试删除CMakeCache.txt(或清理您的源代码生成目录)并重建. DarenW也提到了这一个.
>查找和配置第三方库:如果您有一个大型项目,这取决于几个库(您自己或第三方),这可能是最麻烦的.

>我认真推荐潜水进入find_package命令.它非常强大,但完全取决于FindXXX.cmake文件的质量.特别是当在多个平台(大多数是Windows和Mac)上构建时,这些文件可能需要进行一些调整,或者您可能需要自己编写.>链接库的问题,如调试“未定义的引用”或调试| release或static | shared之间的不匹配可能难以调试.特别是与第三方库这些问题可能是由第三方FindXXX.cmake文件不正确导致的…

相关文章
相关标签/搜索