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