|
1 | 1 | cmake_minimum_required(VERSION 3.0) |
2 | 2 |
|
| 3 | +# 获取git hash |
| 4 | + |
| 5 | +message(STATUS "CMAKE_CURRENT_SOURCE_DIR= ${CMAKE_CURRENT_SOURCE_DIR}") |
| 6 | +execute_process( |
| 7 | + COMMAND git submodule foreach git log -1 --format=%H |
| 8 | + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
| 9 | + OUTPUT_VARIABLE COMMIT_HASH |
| 10 | +) |
| 11 | +string(REPLACE "\n" ";" COMMIT_HASH "${COMMIT_HASH}") |
| 12 | +list(GET COMMIT_HASH 1 COMMIT_HASH) |
| 13 | +string (REGEX REPLACE "[\n\t\r]" "" COMMIT_HASH ${COMMIT_HASH}) |
| 14 | +string(SUBSTRING ${COMMIT_HASH} 0 7 COMMIT_HASH) |
| 15 | +message(STATUS "git hash= ${COMMIT_HASH}") |
| 16 | + |
| 17 | +# 获取分支名称 |
| 18 | +execute_process( |
| 19 | + COMMAND git submodule foreach git branch -r --contains ${COMMIT_HASH} |
| 20 | + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
| 21 | + OUTPUT_VARIABLE CURRENT_BRANCH |
| 22 | +) |
| 23 | +string(REPLACE "\n" ";" CURRENT_BRANCH "${CURRENT_BRANCH}") |
| 24 | +list(GET CURRENT_BRANCH 1 CURRENT_BRANCH) |
| 25 | +string (REGEX REPLACE "origin/" "" CURRENT_BRANCH ${CURRENT_BRANCH}) |
| 26 | +string (REGEX REPLACE "[\n\t\r]" "" CURRENT_BRANCH ${CURRENT_BRANCH}) |
| 27 | +#string(SUBSTRING ${CURRENT_BRANCH} 0 8 CURRENT_BRANCH) |
| 28 | +message(STATUS "git current branch = ${CURRENT_BRANCH}") |
| 29 | + |
| 30 | +# 获取生成时间 |
| 31 | +execute_process( |
| 32 | + COMMAND date +"%y%m%d" |
| 33 | + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
| 34 | + OUTPUT_VARIABLE COMPILE_TIME |
| 35 | +) |
| 36 | +string (REGEX REPLACE "[\n\t\r]" "" COMPILE_TIME ${COMPILE_TIME}) |
| 37 | +string(REGEX REPLACE "\"" "" COMPILE_TIME ${COMPILE_TIME}) |
| 38 | + |
| 39 | +# 生成版本信息 |
| 40 | +set(GIT_VERSION "Meta_${CURRENT_BRANCH}_${COMMIT_HASH}_${COMPILE_TIME}") |
| 41 | +message(STATUS "version info = ${GIT_VERSION}") |
| 42 | + |
| 43 | +# 去除空格 |
| 44 | +string(REGEX REPLACE "[ ]+" "" GIT_VERSION "${GIT_VERSION}") |
| 45 | + |
| 46 | +# 保存变量到文件 |
| 47 | +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/version.h @ONLY) |
| 48 | + |
3 | 49 | project(clash-bridge C) |
4 | 50 |
|
| 51 | + |
5 | 52 | set(CMAKE_POSITION_INDEPENDENT_CODE on) |
6 | 53 | set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3") |
7 | 54 |
|
|
0 commit comments