使用 CMake 生成 ac 配置文件

如果我们有一个 c ++项目使用带有一些自定义路径或变量的 config.h 配置文件,我们可以使用 CMake 和通用文件 config.h.in 生成它。

config.h.in 可以是 git 存储库的一部分,而生成的文件 config.h 将永远不会被添加,因为它是从当前环境生成的。

#CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)

SET(PROJ_NAME "myproject")
PROJECT(${PROJ_NAME})

SET(${PROJ_NAME}_DATA     ""     CACHE PATH "This directory contains all DATA and RESOURCES")
SET(THIRDPARTIES_PATH    ${CMAKE_CURRENT_SOURCE_DIR}/../thirdparties      CACHE PATH "This directory contains thirdparties")

configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/common/config.h.in"
            "${CMAKE_CURRENT_SOURCE_DIR}/include/config.h" )

如果我们有这样的 config.h.in:

cmakedefine PATH_DATA "@myproject_DATA@"
cmakedefine THIRDPARTIES_PATH "@THIRDPARTIES_PATH@"

以前的 CMakeLists 将生成一个 c ++标头,如下所示:

#define PATH_DATA "/home/user/projects/myproject/data"
#define THIRDPARTIES_PATH "/home/user/projects/myproject/thirdparties"