使用VTK来进行程序开发必然要用到CMake,对于VTK开发人员来说,CMake是一个必须了解的工具。
据维基百科所讲,CMake是一个跨平台的免费开源软件,使用独立的编译方式来管理软件的构建过程,它支持分层的目录结构以及依赖于多个库的应用。它在使用过程中结合了本地构建环境像 make,苹果的 Xcode,以及 Microsoft Visual Studio。它的依赖性很小,在其构建系统中仅需要一个C++编译器。
CMake的产生与发展与VTK息息相关,CMake发展于1999年最初是用于满足由美国国家医学图书馆出资的Visible Human Project项目下的ITK( Insight Segmentation and Registration Toolkit)软件的跨平台构建需要,其设计受到了Ken Martin和其他一些开发者创建的pcmaker的影响,pcmaker当初又是为了支持VTK(Visualization Toolkit)这个开源的三维图形和视觉系统才出现的,在 Kitware公司,Bill Hoffman根据自己的想法融合了pcmaker的组件模块,力求模拟出Unix配置脚本的功能,CMake的第一次执行子是在2000年,在2001年有了更进一步的发展。CMake公司后来将其做了进一步提高和发展,使其能够进入到开发者自己的系统中。现在VTK也采用了CMake来构建工程。
从以上关于CMake的介绍可知,CMake其实就是一个跨平台的工程构建工具,可以根据不同的平台生成与平台相关的工程配置文件,比如,若Windows平台采用visual studio的编译器,CMake可以生成*.dsw、*.sln等的项目文件。利用CMake可以管理大型的项目,VTK就采用了CMake作为项目管理工具。同时,CMake的另一个特点就是能够简化工程构建过程,只要给工程中的每一个目录都写一个CMakeLists.txt脚本文件,就可以通过CMake生成该工程的编译文件。
CMake支持in-palce构建(即生成的二进制文件和源文件在同一个目录下)和out-of-place构建(生成的二进制文件和源文件不在同一个目录下)两种工程构建方式
CMake有自己的语言和语法,用CMake进行工程管理的过程,就是编写CMakeLists.txt脚本文件的过程,原则上要求工程里的每一个目录下都要有一个同名文件,而且这个脚本文件的名称只能是CMakeLists.txt。对于Windows平台,由于其不区分文件名大小写,即使脚本文件的名称不区分大小写照样可以通过CMake的配置和生成过程,但是为了在其他平台上如Linux上能够继续正常的使用,建议不管在那个平台上都使用CMakeLists.txt这个文件名,并注意大小写。