Cmake是什么?
很多C++小白刚进入公司开始接触业务代码的时候,或者在学校实验室接触一些大型的C++项目的时候,才发现有Cmake这个东西,一开始可能会有很大的疑惑:Cmake是什么?
而当你打开搜索引擎去检索Cmake的时候,搜索引擎告诉你Cmake仅仅是一个跨平台的编译工具,这时候你可能又会产生疑惑:为什么会有Cmake?C++还需要花费这么大精力去编译吗?之前在DEV,Visual Studio里明明一点“编译”,“运行”就能跑起来的程序,为什么现在还要去写Cmake去编译程序?有这么麻烦吗?
尽管当时的你有很多疑惑,但是你看不懂Cmake,你就无法适应你手上的工程,于是手头上面临的处境在逼迫你此时不得不了解Cmake,以满足生产环境的需要。而当你去找一些教程学习Cmake的时候,可能心里又会产生一个疑惑:为什么学习成本这么大?有必要搞这么麻烦吗?
事实上,如果你留心你所找的教程下面的评论或者公司里带你的师傅对你说过的话,你会发现他们好像都提过一句:Cmake不用学,用一用就会了。真相确实是这样,Cmake确实是用一用就会了。不信的话,你先去跟着一些教程去学一学,然后再来看这篇博文。
我们假定你现在已经系统学习了Cmake,那我现在要考一考你,如果说把你的工程里的CMake删除的话,你能重头到尾去写一个CMake吗?对于刚入门的C++程序员,我想你的答案应该是不能。是的,现在的你可能了解CMake中的每一个语法,每一个关键字,但是你还是无法写出一个CMake,原因在于现在的你不懂如何组织你的代码,这其实就是你看教程永远也学不会CMake的原因。而当你对你的工程比较熟悉之后,知道如何组织你的代码,这时候你就明白什么叫CMake不用学,用一用就会了。
但是这个过程是很艰难的。
Cmake是怎么出现的?
等你自己去写一个大型工程的时候,你会用到很多第三方库,你会需要把自己的代码打包成库,供他人使用,这时候,如果你还用学校里学的那一套:打开Visual Studio,新建文件,巴拉巴拉一大堆的时候,等到编译的时候,你就会知道为什么需要CMake。没有CMake肯定也能编译,但是那个复杂程度远超你的想象。
你的任务是把自己的工程跑起来,等你自己想办法仅仅为了绕开CMake去走传统的路子去跑你的程序的时候,你会发现,你在编译上花费的精力是巨大的,程序你已经写好了,却在最后一步编译上付出了很多努力,最后仅仅是为了运行,肯定是得不偿失的。
工具的出现是为了