From c09bee856cff61dacf248c5ddec1c378bd906a6c Mon Sep 17 00:00:00 2001 From: taynpg Date: Mon, 24 Mar 2025 22:17:47 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=B7=BB=E5=8A=A0git=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 24 +++++++++++++++++------- main.cpp | 2 ++ version.h.in | 9 +++++++++ 3 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 version.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt index f32f665..8704331 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,12 +8,6 @@ if (MSVC) add_compile_options(/source-charset:utf-8) endif() -if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows") - MESSAGE(STATUS "Add MinGW Param.") - add_compile_options(-finput-charset=utf-8) - add_compile_options(-fexec-charset=gbk) -endif() - set(CMAKE_DEBUG_POSTFIX "d") message(STATUS "System: ${CMAKE_SYSTEM_NAME}") message(STATUS "Compiler CXX ID: ${CMAKE_CXX_COMPILER_ID}") @@ -21,4 +15,20 @@ message(STATUS "Compiler CXX ID: ${CMAKE_CXX_COMPILER_ID}") set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}/) -add_executable(vs-cmake-demo main.cpp) \ No newline at end of file +include_directories(${PROJECT_BINARY_DIR}) +add_executable(vs-cmake-demo main.cpp) + +string(TIMESTAMP VERSION_BUILD_DATE "%Y-%m-%d %H:%M") +execute_process( + COMMAND git rev-parse --short HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE VERSION_GIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE +) +execute_process( + COMMAND git rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE VERSION_GIT_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE +) +configure_file(version.h.in version.h) \ No newline at end of file diff --git a/main.cpp b/main.cpp index 157fa26..11b3679 100644 --- a/main.cpp +++ b/main.cpp @@ -1,7 +1,9 @@ #include +#include "version.h" int main() { + std::cout << VERSION_GIT_COMMIT << std::endl; std::cout << "Done" << std::endl; return 0; } \ No newline at end of file diff --git a/version.h.in b/version.h.in new file mode 100644 index 0000000..d06491c --- /dev/null +++ b/version.h.in @@ -0,0 +1,9 @@ +#ifndef VERSION_H +#define VERSION_H + +#define VERSION_GIT_COMMIT "@VERSION_GIT_HASH@" +#define VERSION_GIT_BRANCH "@VERSION_GIT_BRANCH@" +#define VERSION_NUM "@PROJECT_VERSION@" +#define VERSION_URL "@PROJECT_URL@" + +#endif