你好,游客 登录 注册 搜索
背景:
阅读新闻

CMake并没有想象中好用

[日期:2014-03-25] 来源:Linux社区  作者:langresser_king [字体: ]

简单说,CMake可以自动生成各个平台的build(make)文件,从而达到编写一份build脚本就可以自动在各平台生成独自的工程文件。

这似乎听起来很好,但是实际使用中会有各种恶心的问题。导致有的时候我宁愿自己重新搭建工程文件也不想用cmake。

1、首先你要熟悉cmake才能知道为什么它没有成功的生成工程文件,单单一个xxx not found是无法帮助我们解决问题的。但是大多数时候我并不想学习cmake,我想要的仅仅是生成工程文件,然后运行。之后ide再报什么文件没有找到的话,我自己再修改和添加。我熟悉vs 也熟悉xcode,但是现在还要熟悉cmake。。。。。

2、紧接着上面一点,cmake的工程文件并不那么好生成。很多时候由于各种依赖,导致无法生成。如果作者心地善良的话,还会准备好depslibrary,否则的话,你就要自己一个一个去找。这起始并没有什么问题,但是我宁愿先给我生成工程文件,然后我对其进行删减,去掉不需要的东西,或者是我再一个一个添加依赖库。虽然这听起来跟先准备依赖库然后再生成工程差不多。但是实际操作中完全是两码事,因为我熟悉vs,我可以轻易的按照自己的喜好添加好对应文件(比如相对路径,比如我自己保留一份常用的第三方库依赖包)。如果用cmake,你必须把指定的文件放到指定的地方。(ps:虽然我知道这些强制依赖并不是cmake的问题,但是很多人滥用了这些强制检查,就使得cmake并不符合我的胃口)

3、cmake还有个功能是可以设置编译前和编译后运行脚本。这个原本很正常,但是实际使用中还是会有把你恶心到。比如xcode下面作者可以设定自动拷贝一些资源文件,但是这并不方便,也跟我的传统用法相矛盾,以至于我要重新添加下资源文件,并且要修改生成的包的位置。

说了这些鸡毛蒜皮但是确确实实把我恶心到的小事,然后再说说我心目中的可以方便使用的跨平台工程是什么样子的:

1、作者在哪个平台开发,提供哪个平台的工程文件,这样我们至少有一份保证正确的工程文件。(如果是vs的话,使用相对路径,避免本地文件依赖。)

2、代码本身足够清晰,把平台相关的东西集中到一起。这样即便没有提供xcode的工程文件,我也可以非常轻易的搭建好工程----简简单单的把文件拖进来,删除非mac平台的文件,添加好依赖。这里举个反例,freetype虽然功能强大到无以复加,但是代码实在是恶心,各种#include "xxx.c"的形式,而我们真正需要编译的文件隐藏在各种被包含的.c文件之中,如果要搭建一个xcode的工程,要从中一个一个把文件摘出来,我只想说,何必呢?

linux
相关资讯       CMake 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款