@@ -25,6 +25,9 @@ SET(CPPGIT2_VERSION_MINOR 1)
25
25
SET (CPPGIT2_VERSION_REV 0)
26
26
SET (CPPGIT2_VERSION_STRING "${CPPGIT2_VERSION_MAJOR} .${CPPGIT2_VERSION_MINOR} .${CPPGIT2_VERSION_REV} " )
27
27
28
+ # Build option for shared vs. static lib (Same option as for libgit2)
29
+ OPTION (BUILD_SHARED_LIBS "Build Shared Library (OFF for Static)" ON )
30
+
28
31
# Build object library
29
32
ADD_LIBRARY (CPPGIT2_OBJECT_LIBRARY OBJECT ${CPPGIT2_SOURCES} )
30
33
INCLUDE_DIRECTORIES ("include" "${LIBGIT2_INCLUDEDIR} " "test" )
@@ -33,19 +36,18 @@ SET_PROPERTY(TARGET CPPGIT2_OBJECT_LIBRARY PROPERTY CXX_STANDARD 11)
33
36
# Shared libraries need PIC
34
37
SET_PROPERTY (TARGET CPPGIT2_OBJECT_LIBRARY PROPERTY POSITION_INDEPENDENT_CODE 1)
35
38
36
- # Build shared library
37
- add_library (CPPGIT2_SHARED SHARED $<TARGET_OBJECTS:CPPGIT2_OBJECT_LIBRARY>)
38
- SET_TARGET_PROPERTIES (CPPGIT2_SHARED PROPERTIES OUTPUT_NAME cppgit2)
39
- SET_TARGET_PROPERTIES (CPPGIT2_SHARED PROPERTIES VERSION ${CPPGIT2_VERSION_STRING}
40
- SOVERSION ${CPPGIT2_VERSION_MINOR} )
41
- SET_TARGET_PROPERTIES (CPPGIT2_SHARED PROPERTIES CXX_STANDARD 11)
42
- TARGET_LINK_LIBRARIES (CPPGIT2_SHARED git2)
43
-
44
- # Build static library
45
- add_library (CPPGIT2_STATIC STATIC $<TARGET_OBJECTS:CPPGIT2_OBJECT_LIBRARY>)
46
- SET_TARGET_PROPERTIES (CPPGIT2_STATIC PROPERTIES OUTPUT_NAME cppgit2)
47
- SET_TARGET_PROPERTIES (CPPGIT2_STATIC PROPERTIES CXX_STANDARD 11)
48
- TARGET_LINK_LIBRARIES (CPPGIT2_STATIC git2)
39
+ # Build shared/static library
40
+ if (BUILD_SHARED_LIBS )
41
+ ADD_LIBRARY (cppgit2 SHARED $<TARGET_OBJECTS:CPPGIT2_OBJECT_LIBRARY>)
42
+ SET_TARGET_PROPERTIES (cppgit2 PROPERTIES
43
+ VERSION ${CPPGIT2_VERSION_STRING}
44
+ SOVERSION ${CPPGIT2_VERSION_MINOR}
45
+ WINDOWS_EXPORT_ALL_SYMBOLS ON )
46
+ else ()
47
+ ADD_LIBRARY (cppgit2 STATIC $<TARGET_OBJECTS:CPPGIT2_OBJECT_LIBRARY>)
48
+ endif ()
49
+ SET_TARGET_PROPERTIES (cppgit2 PROPERTIES CXX_STANDARD 11)
50
+ TARGET_LINK_LIBRARIES (cppgit2 git2)
49
51
50
52
# Copy include directories to build/include
51
53
FILE (COPY "include" DESTINATION "${CMAKE_BINARY_DIR} /." )
@@ -58,7 +60,7 @@ FOREACH(SAMPLE ${SAMPLES})
58
60
GET_FILENAME_COMPONENT (SAMPLE_EXE ${SAMPLE} NAME_WE )
59
61
ADD_EXECUTABLE (${SAMPLE_EXE} ${SAMPLE} )
60
62
SET_TARGET_PROPERTIES (${SAMPLE_EXE} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /samples" )
61
- TARGET_LINK_LIBRARIES (${SAMPLE_EXE} CPPGIT2_SHARED )
63
+ TARGET_LINK_LIBRARIES (${SAMPLE_EXE} cppgit2 )
62
64
SET_PROPERTY (TARGET ${SAMPLE_EXE} PROPERTY CXX_STANDARD 11)
63
65
ENDFOREACH ()
64
66
@@ -69,5 +71,5 @@ SET_SOURCE_FILES_PROPERTIES(test/main.cpp
69
71
COMPILE_DEFINITIONS DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN)
70
72
ADD_EXECUTABLE (cppgit2_test ${TESTS} )
71
73
SET_TARGET_PROPERTIES (cppgit2_test PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /test" )
72
- TARGET_LINK_LIBRARIES (cppgit2_test CPPGIT2_SHARED )
74
+ TARGET_LINK_LIBRARIES (cppgit2_test cppgit2 )
73
75
SET_PROPERTY (TARGET cppgit2_test PROPERTY CXX_STANDARD 11)
0 commit comments