git2wrapC++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 (2370B)
0 cmake_minimum_required(VERSION 3.14)
2 include(cmake/prelude.cmake)
4 project(
5 git2wrap
6 VERSION 0.3.0
7 DESCRIPTION "C++ 20 wrapper for libgit2"
8 HOMEPAGE_URL "https://git.dimitrijedobrota.com/git2wrap.git"
9 LANGUAGES CXX
10 )
12 include(cmake/project-is-top-level.cmake)
13 include(cmake/variables.cmake)
15 # ---- Declare dependencies ----
17 find_package(libgit2 1.9 CONFIG REQUIRED)
18 find_package(based 0.1.2 CONFIG REQUIRED)
20 # ---- Declare library ----
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)
41 target_link_libraries(git2wrap_git2wrap PUBLIC git2 based::based)
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 )
51 if(NOT BUILD_SHARED_LIBS)
52 target_compile_definitions(git2wrap_git2wrap PUBLIC GIT2WRAP_STATIC_DEFINE)
53 endif()
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 )
65 target_include_directories(
66 git2wrap_git2wrap ${warning_guard}
67 PUBLIC
68 "\$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
69 )
71 target_include_directories(
72 git2wrap_git2wrap SYSTEM
73 PUBLIC
74 "\$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/export>"
75 )
77 target_compile_features(git2wrap_git2wrap PUBLIC cxx_std_20)
79 # ---- Install rules ----
81 if(NOT CMAKE_SKIP_INSTALL_RULES)
82 include(cmake/install-rules.cmake)
83 endif()
85 # ---- Examples ----
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()
94 # ---- Developer mode ----
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()
105 include(cmake/dev-mode.cmake)