CMake简介

CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。

CMake使用方法

CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object))。
CMake的所有的语句都写在一个名为CMakeLists.txt的文件中。
当CMakeLists.txt文件确定后,可以用ccmake命令对相关的变量值进行配置。这个命令必须指向CMakeLists.txt所在的目录。
配置完成之后,应用cmake命令生成相应的 makefile(在Unix like系统下)或者 project文件(指定用window下的相应编程工具编译时)。
其基本操作流程为:

$ ccmake directory
$ cmake directory
$ make

其中directory为CMakeList.txt所在目录;

  • 第一条语句用于配置编译选项,如VTK_DIR目录 ,一般这一步不需要配置,直接执行第二条语句即可,但当出现错误时,这里就需要认为配置了,这一步才真正派上用场;
  • 第二条命令用于根据CMakeLists.txt生成Makefile文件;
  • 第三条命令用于执行Makefile文件,编译程序,生成可执行文件;

cmake命令执行后会生成很多编译的中间文件以及makefile文件,所以一般建议新建一个新的目录,专门用来编译。

$ mkdir build
$ cd build
$ cmake ..
$ make

CMakeLists编写

·#·号后面是注释

 #1.cmake verson,指定cmake版本 
 cmake_minimum_required(VERSION 3.2)
 
 #2.project name,指定项目的名称,一般和项目的文件夹名称对应
 PROJECT(test_sqrt)
 
 #3.head file path,头文件目录
 INCLUDE_DIRECTORIES(
 include
 )
 
 #4.source directory,源文件目录
 AUX_SOURCE_DIRECTORY(src DIR_SRCS)
 
 #5.set environment variable,设置环境变量,编译用到的源文件全部都要放到这里,否则编译能够通过,但是执行的时候会出现各种问题,比如"symbol lookup error xxxxx , undefined symbol"
 SET(TEST_MATH
 ${DIR_SRCS}
 )
 
 #6.add executable file,添加要编译的可执行文件
 ADD_EXECUTABLE(${PROJECT_NAME} ${TEST_MATH})
 
 #7.add link library,添加可执行文件所需要的库,比如我们用到了libm.so(命名规则:lib+name+.so),就添加该库的名称
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} m)

Makefile简介

dd