Skip to content
This repository was archived by the owner on Jan 19, 2021. It is now read-only.

Commit d213d6c

Browse files
committed
Added CMakeLists
1 parent 2253878 commit d213d6c

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

CMakeLists.txt

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
PROJECT(cppgit2)
2+
CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
3+
4+
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
5+
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
6+
7+
# Add libgit2
8+
ADD_SUBDIRECTORY(ext/libgit2 ${CMAKE_BINARY_DIR}/lib)
9+
10+
INCLUDE(CMakePackageConfigHelpers)
11+
12+
# Sources for cppgit2
13+
FILE(GLOB CPPGIT2_SOURCES
14+
"src/*.cpp"
15+
)
16+
17+
# Version information
18+
SET(CPPGIT2_VERSION_MAJOR 0)
19+
SET(CPPGIT2_VERSION_MINOR 1)
20+
SET(CPPGIT2_VERSION_REV 0)
21+
SET(CPPGIT2_VERSION_STRING "${CPPGIT2_VERSION_MAJOR}.${CPPGIT2_VERSION_MINOR}.${CPPGIT2_VERSION_REV}")
22+
23+
# Build object library
24+
ADD_LIBRARY(CPPGIT2_OBJECT_LIBRARY OBJECT ${CPPGIT2_SOURCES})
25+
INCLUDE_DIRECTORIES("include" "ext/libgit2/include")
26+
SET_PROPERTY(TARGET CPPGIT2_OBJECT_LIBRARY PROPERTY CXX_STANDARD 11)
27+
28+
# Shared libraries need PIC
29+
SET_PROPERTY(TARGET CPPGIT2_OBJECT_LIBRARY PROPERTY POSITION_INDEPENDENT_CODE 1)
30+
31+
# Build shared library
32+
add_library(CPPGIT2_SHARED SHARED $<TARGET_OBJECTS:CPPGIT2_OBJECT_LIBRARY>)
33+
SET_TARGET_PROPERTIES(CPPGIT2_SHARED PROPERTIES OUTPUT_NAME cppgit2)
34+
SET_TARGET_PROPERTIES(CPPGIT2_SHARED PROPERTIES VERSION ${CPPGIT2_VERSION_STRING}
35+
SOVERSION ${CPPGIT2_VERSION_MINOR})
36+
TARGET_LINK_LIBRARIES(CPPGIT2_SHARED git2)
37+
38+
# Build static library
39+
add_library(CPPGIT2_STATIC STATIC $<TARGET_OBJECTS:CPPGIT2_OBJECT_LIBRARY>)
40+
SET_TARGET_PROPERTIES(CPPGIT2_STATIC PROPERTIES OUTPUT_NAME cppgit2.static)
41+
TARGET_LINK_LIBRARIES(CPPGIT2_STATIC git2)
42+
43+
# Copy include directories to build/include
44+
FILE(COPY "include" DESTINATION "${CMAKE_BINARY_DIR}/.")
45+
FILE(COPY "ext/libgit2/include" DESTINATION "${CMAKE_BINARY_DIR}/.")
46+
47+
# Build samples
48+
FILE(GLOB SAMPLES "samples/*.cpp")
49+
FOREACH(SAMPLE ${SAMPLES})
50+
GET_FILENAME_COMPONENT(SAMPLE_EXE ${SAMPLE} NAME_WE)
51+
ADD_EXECUTABLE(${SAMPLE_EXE} ${SAMPLE})
52+
SET_TARGET_PROPERTIES(${SAMPLE_EXE} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/samples")
53+
TARGET_LINK_LIBRARIES(${SAMPLE_EXE} CPPGIT2_SHARED)
54+
SET_PROPERTY(TARGET ${SAMPLE_EXE} PROPERTY CXX_STANDARD 11)
55+
ENDFOREACH()

0 commit comments

Comments
 (0)