概述:cmake构建c/c++项目时候
有时候我们需要在代码中动态地读取应用的版本号,应用的名称,应用的编译时间,这时候考虑如何读取呢?在编译时候才确定的版本号和应用名称,你不可能在写代码时候就写死版本号/或者时间,可以利用CMake的configure_file来实现,主要原理就是在cmake时候才传入可变的应用名和版本号/时间
测试项目结构
main.cpp文件是使用到app_cmake_define.h里面定义的宏变量,app_cmake_define.h是cmake过程中利用configure_file指令来生成的文件
- 准备app_cmake_define.h.in文件 ,内容为
// app version config
#define APP_VERSION_STR "${APP_VERSION_STR}"
#define APP_NAME_STR "${APP_NAME_STR}"
2.编写CMakeLists.txt
cmake_minimum_required(VERSION 3.6)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "My multi config types" FORCE)
if(NOT APP_NAME)
set(APP_NAME MyAppTest)
endif()
project(${APP_NA