Issue #182: Provide means for building static version of library

This commit is contained in:
Benjamin Lee 2017-05-08 22:13:55 -07:00
parent a1b5d97689
commit 04f71853d7
4 changed files with 60 additions and 18 deletions

View File

@ -104,32 +104,48 @@ ENDIF()
# Create the g3log library
INCLUDE_DIRECTORIES(${LOG_SRC})
SET(G3LOG_LIBRARY g3logger)
ADD_LIBRARY(${G3LOG_LIBRARY} SHARED ${SRC_FILES})
SET(${G3LOG_LIBRARY}_VERSION_STRING ${VERSION})
MESSAGE("Creating ${G3LOG_LIBRARY} VERSION: " ${VERSION})
SET_TARGET_PROPERTIES(g3logger PROPERTIES LINKER_LANGUAGE CXX SOVERSION ${VERSION})
SET(G3LOG_LIBRARY g3logger)
SET(G3LOG_LIBRARY_STATIC g3logger_static)
set_target_properties(${G3LOG_LIBRARY} PROPERTIES
IF (LIB_DYNAMIC OR LIB_STATIC)
SET(${G3LOG_LIBRARY}_VERSION_STRING ${VERSION})
MESSAGE("Creating ${G3LOG_LIBRARY} VERSION: " ${VERSION})
ENDIF()
IF(LIB_DYNAMIC)
ADD_LIBRARY(${G3LOG_LIBRARY} SHARED ${SRC_FILES})
SET_TARGET_PROPERTIES(g3logger PROPERTIES LINKER_LANGUAGE CXX SOVERSION ${VERSION})
set_target_properties(${G3LOG_LIBRARY} PROPERTIES
LINKER_LANGUAGE CXX
OUTPUT_NAME g3logger
CLEAN_DIRECT_OUTPUT 1)
IF(APPLE)
set_target_properties(${G3LOG_LIBRARY} PROPERTIES MACOSX_RPATH TRUE)
IF(APPLE)
set_target_properties(${G3LOG_LIBRARY} PROPERTIES MACOSX_RPATH TRUE)
ENDIF()
ENDIF()
IF(LIB_STATIC)
ADD_LIBRARY(${G3LOG_LIBRARY_STATIC} STATIC ${SRC_FILES})
SET_TARGET_PROPERTIES(${G3LOG_LIBRARY_STATIC} PROPERTIES LINKER_LANGUAGE CXX OUTPUT_NAME ${G3LOG_LIBRARY})
ENDIF()
IF(NOT ${ADD_BUILD_WIN_SHARED}.x STREQUAL ".x")
IF(NOT(CMAKE_VERSION LESS 3.4) AND MSVC)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(${G3LOG_LIBRARY} ${PLATFORM_LINK_LIBRIES})
# Kjell: This is likely not necessary, except for Windows?
TARGET_INCLUDE_DIRECTORIES(${G3LOG_LIBRARY} PUBLIC ${LOG_SRC})
IF (LIB_DYNAMIC)
TARGET_LINK_LIBRARIES(${G3LOG_LIBRARY} ${PLATFORM_LINK_LIBRIES})
# Kjell: This is likely not necessary, except for Windows?
TARGET_INCLUDE_DIRECTORIES(${G3LOG_LIBRARY} PUBLIC ${LOG_SRC})
ENDIF()
IF (LIB_STATIC)
TARGET_LINK_LIBRARIES(${G3LOG_LIBRARY_STATIC} ${PLATFORM_LINK_LIBRIES})
ENDIF()

View File

@ -40,18 +40,27 @@ SET(CPACK_RESOURCE_FILE_LICENSE ${g3log_SOURCE_DIR}/LICENSE)
SET(CPACK_PACKAGE_VENDOR "KjellKod")
SET(CMAKE_INSTALL_HEADERDIR ${CMAKE_INSTALL_HEADERDIR}/g3log)
IF(LIB_DYNAMIC)
INSTALL( TARGETS g3logger
ARCHIVE DESTINATION ${CPACK_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CPACK_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
COMPONENT libraries)
ENDIF()
IF(LIB_STATIC)
INSTALL( TARGETS g3logger_static
ARCHIVE DESTINATION ${CPACK_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
COMPONENT libraries)
ENDIF()
IF(LIB_DYNAMIC OR LIB_STATIC)
INSTALL( FILES ${HEADER_FILES}
DESTINATION ${CPACK_INSTALL_PREFIX}/${CMAKE_INSTALL_HEADERDIR}
COMPONENT headers)
INSTALL( FILES ${PROJECT_SOURCE_DIR}/cmake/g3loggerConfig.cmake
DESTINATION ${CPACK_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/cmake/g3logger)
ENDIF()
SET(CPACK_COMPONENTS_ALL libraries headers)
SET(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "G3Log libraries")

View File

@ -109,10 +109,27 @@ IF (MSVC OR MINGW)
MESSAGE("-DADD_BUILD_WIN_SHARED=OFF")
ENDIF()
ENDIF (MSVC OR MINGW)
# -DLIB_DYNAMIC=ON : Build dynamic version of the library
option (LIB_DYNAMIC
"Build dynamic version of the library. By default the dynamic library will be generated" ON)
IF (LIB_DYNAMIC)
MESSAGE("-DLIB_DYNAMIC=ON\t\t\t(Dynamic library will be built)")
ELSE()
MESSAGE("-DLIB_DYNAMIC=OFF\t\t\t(Dynamic library will not be built)")
ENDIF(LIB_DYNAMIC)
# -DLIB_STATIC=ON : Build static version of the library
option (LIB_STATIC
"Build static version of the library. By default the static library will not be generated" OFF)
IF (LIB_STATIC)
MESSAGE("-DLIB_STATIC=ON\t\t\t\t(Static library will be built)")
ELSE()
MESSAGE("-DLIB_STATIC=OFF\t\t\t(Static library will not be built)")
ENDIF(LIB_STATIC)
MESSAGE("\n\n\n")

View File

@ -30,7 +30,7 @@
option (ADD_FATAL_EXAMPLE "Fatal (fatal-crashes/contract) examples " ON)
IF (ADD_FATAL_EXAMPLE)
IF (ADD_FATAL_EXAMPLE AND LIB_DYNAMIC)
MESSAGE("-DADD_FATAL_EXAMPLE=ON")
MESSAGE("\t\t[contract][sigsegv][fatal choice] are examples of when g3log comes in handy\n")
include_directories (${DIR_EXAMPLE})
@ -43,4 +43,4 @@
target_link_libraries(g3log-FATAL-choice ${G3LOG_LIBRARY} ${EXAMPLE_PLATFORM_LINK_LIBRIES})
ELSE()
MESSAGE("-DADD_SIMPLE_EXAMPLE=OFF")
ENDIF (ADD_FATAL_EXAMPLE)
ENDIF (ADD_FATAL_EXAMPLE AND LIB_DYNAMIC)