|
| 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