配置文件

用于动态生成配置文件, 根据当前 cmake 脚本中的变量的值.

比如, 生成当前程序的版本号到一个头文件中. 首先定义一个输入文件, version.h.in:

#ifndef FOO_VERSION_H
#define FOO_VERSION_H

#cmakedefine FOO_VERSION @FOO_VERSION@

#endif  // FOO_VERSION_H

之后在 CMakeLists.txt 中引入它:

set(FOO_MAJOR 1)
set(FOO_MINOR 2)
set(FOO_PATCH 4)
set(FOO_VERSION "${FOO_MAJOR}.${FOO_MINOR}.${FOO_PATCH}")
configure_file(version.h.in version.h)
include_directories(${CMAKE_CURRENT_BINARY_DIR})

这里先定义了版本号 FOO_VERSION 变量的值是 1.2.4, 之后调用 configure() 命令, 在当前的二进制目录下会生成 version.h 文件, 其内容是:

#ifndef FOO_VERSION_H
#define FOO_VERSION_H

#define FOO_VERSION 1.2.4

#endif  // FOO_VERSION_H

比如, 根据当前的最新的 git 提供记录生成包含提供哈稀的版本号时, 可以很方便地 使用这种方法.