CMake记录(一)
CMake也用过几次了,这次打算系统的读一读官方文档,作一些记录。以后可以把源代码也看一下。
如果是找教程,想立即开始用CMake,则推荐CMake实践。
1. CMake本身不是一个build process,而是调用本地build工具,如Make,甚至Visual Studio
2. CMake在cross-platform软件开发、维护过程中特别有用。
当我们写出了一些源文件后,它们之间极可能会有一些依赖关系。需求是:我们需要把这些文件make出binary--通常这样就够了。在Linux上,我们可能会使用make,先写一个Makefile来表明依赖关系,如:
1: main.o: main.c main.h
2: cc -c main.c
3: MyProgram: main.o
4: cc -o MyProgram main.o -lm -lz
嗯,问题解决了。但若有多个平台时呢?可能使用了不同的编译器,于是:
cc : Command not found
即对编译器作出修改,嗯,效果不错,但可能新平台上没有 zlib,于是要把编译选项–lz去掉…如果还有另外一个库也有问题呢?逐个修改是不是太麻烦了?
Autoconf、Automake这时就可大展身手了,但是它们通常很复杂,以至于基本不想动用它们…而且,写啊写到最后可能会发现,不知什么时候我们已经在文件内写shell脚本了,悲剧的地方在于我们通常会对shell类型作假设,于是一段脚本可能在Bourne shell下是可以的,但在sh下就不能用了 - -! 也就是说这二位使用的工具中,有一些是平台相关的。
CMake登场了。与上面的工具不同,它对底层平面作了很少的假设,用标准C++写成,因此几乎可以在任何系统上运行,它所调用的工具也仅仅是本地的构建系统而已。