一种cmake下创建软件版本号
创建version.h.in
#pragma once
#define PROJECT_VERSION_MAJOR @PROJECT_VERSION_MAJOR@
#define PROJECT_VERSION_MINOR @PROJECT_VERSION_MINOR@
#define PROJECT_VERSION_PATCH @PROJECT_VERSION_PATCH@
#define PROJECT_VERSION "@PROJECT_VERSION@"
CMakeLists.txt
修改 CMakeLists.txt
,配置configure_file
cmake_minimum_required(VERSION 3.14)
project(test VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 配置版本头文件
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/version.h.in
${CMAKE_CURRENT_BINARY_DIR}/version.h
)
# 添加可执行文件
add_executable(test main.cpp)
# 包含生成的 version.h 目录
target_include_directories(test PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
使用
main.cpp
:
#include <iostream>
#include "version.h"
int main() {
std::cout << "Project Version: " << PROJECT_VERSION << std::endl;
return 0;
}
构建时,cmake
会生成 build/version.h
,里面会替换成
#define PROJECT_VERSION_MAJOR 1
#define PROJECT_VERSION_MINOR 0
#define PROJECT_VERSION_PATCH 0
#define PROJECT_VERSION "1.0.0"
输出:
./test
Project Version: 1.0.0
comment:
- Valine
- LiveRe
- ChangYan