git2wrap

C++20 wrapper for libgit2
git clone git://git.dimitrijedobrota.com/git2wrap.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |

CMakeLists.txt (2315B)


1 cmake_minimum_required(VERSION 3.14) 2 3 include(cmake/prelude.cmake) 4 5 project( 6 git2wrap 7 VERSION 0.2.1 8 DESCRIPTION "C++ 20 wrapper for libgit2" 9 HOMEPAGE_URL "https://git.dimitrijedobrota.com/git2wrap.git" 10 LANGUAGES CXX 11 ) 12 13 include(cmake/project-is-top-level.cmake) 14 include(cmake/variables.cmake) 15 16 # ---- Declare dependencies ---- 17 18 find_package(libgit2 1.9 CONFIG REQUIRED) 19 20 # ---- Declare library ---- 21 22 add_library( 23 git2wrap_git2wrap 24 source/blob.cpp 25 source/branch.cpp 26 source/buf.cpp 27 source/commit.cpp 28 source/diff.cpp 29 source/libgit2.cpp 30 source/object.cpp 31 source/oid.cpp 32 source/reference.cpp 33 source/repository.cpp 34 source/revwalk.cpp 35 source/signature.cpp 36 source/tag.cpp 37 source/tree.cpp 38 ) 39 add_library(git2wrap::git2wrap ALIAS git2wrap_git2wrap) 40 41 target_link_libraries(git2wrap_git2wrap PUBLIC git2) 42 43 include(GenerateExportHeader) 44 generate_export_header( 45 git2wrap_git2wrap 46 BASE_NAME git2wrap 47 EXPORT_FILE_NAME export/git2wrap/git2wrap_export.hpp 48 CUSTOM_CONTENT_FROM_VARIABLE pragma_suppress_c4251 49 ) 50 51 if(NOT BUILD_SHARED_LIBS) 52 target_compile_definitions(git2wrap_git2wrap PUBLIC GIT2WRAP_STATIC_DEFINE) 53 endif() 54 55 set_target_properties( 56 git2wrap_git2wrap PROPERTIES 57 CXX_VISIBILITY_PRESET hidden 58 VISIBILITY_INLINES_HIDDEN YES 59 VERSION "${PROJECT_VERSION}" 60 SOVERSION "${PROJECT_VERSION_MAJOR}" 61 EXPORT_NAME git2wrap 62 OUTPUT_NAME git2wrap 63 ) 64 65 target_include_directories( 66 git2wrap_git2wrap ${warning_guard} 67 PUBLIC 68 "\$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>" 69 ) 70 71 target_include_directories( 72 git2wrap_git2wrap SYSTEM 73 PUBLIC 74 "\$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/export>" 75 ) 76 77 target_compile_features(git2wrap_git2wrap PUBLIC cxx_std_20) 78 79 # ---- Install rules ---- 80 81 if(NOT CMAKE_SKIP_INSTALL_RULES) 82 include(cmake/install-rules.cmake) 83 endif() 84 85 # ---- Examples ---- 86 87 if(PROJECT_IS_TOP_LEVEL) 88 option(BUILD_EXAMPLES "Build examples tree." "${git2wrap_DEVELOPER_MODE}") 89 if(BUILD_EXAMPLES) 90 add_subdirectory(example) 91 endif() 92 endif() 93 94 # ---- Developer mode ---- 95 96 if(NOT git2wrap_DEVELOPER_MODE) 97 return() 98 elseif(NOT PROJECT_IS_TOP_LEVEL) 99 message( 100 AUTHOR_WARNING 101 "Developer mode is intended for developers of git2wrap" 102 ) 103 endif() 104 105 include(cmake/dev-mode.cmake)