cmake_minimum_required(VERSION 3.7) project(ceev) execute_process( COMMAND git status --porcelain=v1 --ignored=no WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_ISCOMMITTED OUTPUT_STRIP_TRAILING_WHITESPACE) string(COMPARE EQUAL "${GIT_ISCOMMITTED}" "" is_committed) execute_process( COMMAND git rev-parse --short HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( COMMAND git log -1 --pretty=%B WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT_MSG OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( COMMAND git log -1 --pretty=%cD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( COMMAND git log -1 --pretty="%cN <%ce>" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT_AUTHOR OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT is_committed) set(GIT_COMMIT_HASH "${GIT_COMMIT_HASH}-dev") set(GIT_COMMIT_DATE "Not committed yet") endif() set(CMAKE_CXX_STANDARD 17) find_package(SDL2 REQUIRED) include_directories(${SDL2_INCLUDE_DIRS}) add_executable(${PROJECT_NAME} src/ceev.cc src/ceev.h) find_package(ceev REQUIRED) include_directories(${ceev_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} ${ceev_LIBRARIES}) target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES}) target_compile_definitions(${PROJECT_NAME} PRIVATE "-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"") string(REPLACE "\n" "\\n" GIT_COMMIT_MSG "${GIT_COMMIT_MSG}") string(REPLACE "\"" "" GIT_COMMIT_AUTHOR "${GIT_COMMIT_AUTHOR}") target_compile_definitions(${PROJECT_NAME} PRIVATE "-DGIT_COMMIT_MSG=\"${GIT_COMMIT_MSG}\"") target_compile_definitions(${PROJECT_NAME} PRIVATE "-DGIT_COMMIT_DATE=\"${GIT_COMMIT_DATE}\"") target_compile_definitions(${PROJECT_NAME} PRIVATE "-DGIT_COMMIT_AUTHOR=\"${GIT_COMMIT_AUTHOR}\"") install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)