@@ -19,9 +19,40 @@ set(ABS_README_PATH "${CMAKE_SOURCE_DIR}/README.md")
1919
2020set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
2121
22+ ########### Create version ############
23+ find_package (Git)
24+
25+ if (GIT_EXECUTABLE)
26+ # Generate a git-describe version string from Git repository tags
27+ execute_process (
28+ COMMAND ${GIT_EXECUTABLE} describe --tags --dirty --match "v*"
29+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
30+ OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
31+ RESULT_VARIABLE GIT_DESCRIBE_ERROR_CODE
32+ OUTPUT_STRIP_TRAILING_WHITESPACE
33+ )
34+
35+ if (NOT GIT_DESCRIBE_ERROR_CODE)
36+ string (REGEX REPLACE "^v([0-9]+)\\ ..*" "\\ 1" VERSION_MAJOR "${GIT_DESCRIBE_VERSION} " )
37+ string (REGEX REPLACE "^v[0-9]+\\ .([0-9]+).*" "\\ 1" VERSION_MINOR "${GIT_DESCRIBE_VERSION} " )
38+ string (REGEX REPLACE "^v[0-9]+\\ .[0-9]+\\ .([0-9]+).*" "\\ 1" VERSION_PATCH "${GIT_DESCRIBE_VERSION} " )
39+ string (REGEX REPLACE "^v[0-9]+\\ .[0-9]+\\ .[0-9]+(.*)" "\\ 1" VERSION_SHA1 "${GIT_DESCRIBE_VERSION} " )
40+ set (PROJECT_VERSION_SHORT "${VERSION_MAJOR} .${VERSION_MINOR} .${VERSION_PATCH} " )
41+ set (PROJECT_VERSION_SHA ${GIT_DESCRIBE_VERSION} )
42+ endif ()
43+ endif ()
44+
45+ # Final fallback: Just use a bogus version string that is semantically older
46+ # than anything else and spit out a warning to the developer.
47+ if (NOT DEFINED PROJECT_VERSION_SHA)
48+ set (PROJECT_VERSION_SHA v0.0.0-unknown)
49+ set (PROJECT_VERSION_SHORT v0.0.0)
50+ message (WARNING "Failed to determine PROJECT_VERSION_SHA from Git tags. Using default version \" ${PROJECT_VERSION_SHA} \" ." )
51+ endif ()
52+
2253########### Create project ############
23- set (PROJECT_VERSION "1.1.0" )
24- project ( ${PROJECT_NAME} VERSION " ${PROJECT_VERSION } " )
54+ project ( ${PROJECT_NAME} VERSION ${PROJECT_VERSION_SHORT} )
55+ message ( STATUS "Project ${PROJECT_NAME} ${PROJECT_VERSION_SHORT } " )
2556
2657########### Setup ############
2758# Set env variable
@@ -82,16 +113,19 @@ target_link_libraries(${PROJECT_NAME} Boxer)
82113add_subdirectory (${ABS_DEPS_DIR} /yaml-cpp)
83114target_link_libraries (${PROJECT_NAME} yaml-cpp)
84115
116+ # cpr
117+ add_subdirectory (${ABS_DEPS_DIR} /cpr)
118+ target_link_libraries (${PROJECT_NAME} cpr)
119+
85120########### Define ############
86- target_compile_definitions (${PROJECT_NAME} PRIVATE PROJECT_VERSION="${PROJECT_VERSION} " )
87121target_compile_definitions (${PROJECT_NAME} PRIVATE RESOURCE_PATH="${REL_RESOURCES_DIR} /" )
122+ target_compile_definitions (${PROJECT_NAME} PRIVATE PROJECT_NAME ="${PROJECT_NAME} " )
123+ target_compile_definitions (${PROJECT_NAME} PRIVATE PROJECT_VERSION="${PROJECT_VERSION_SHA} " )
124+ target_compile_definitions (${PROJECT_NAME} PRIVATE PROJECT_VERSION_SHORT="${PROJECT_VERSION_SHORT} " )
88125
89126########### Build link ############
90127# Set a symbolic link so exe can find the /Data folder
91- add_custom_command (
92- TARGET ${PROJECT_NAME}
93- POST_BUILD COMMAND ${CMAKE_COMMAND}
94- -E create_symlink ${ABS_RESOURCE_DIR} ${ABS_RESOURCES_BUILD_LINK}
95- DEPENDS ${ABS_RESOURCES_BUILD_LINK}
96- COMMENT "symbolic link ${ABS_RESOURCE_DIR} => ${ABS_RESOURCES_BUILD_LINK} "
97- )
128+ add_custom_target (copy_assets
129+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_LIST_DIR} /${REL_RESOURCES_DIR} ${CMAKE_CURRENT_BINARY_DIR} /${REL_RESOURCES_DIR}
130+ )
131+ add_dependencies (${PROJECT_NAME} copy_assets)
0 commit comments