@@ -14,61 +14,80 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
1414set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} /lib)
1515set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} /lib)
1616
17- set (CPACK_PROJECT_NAME ${SEVEN_BIT_DI_PROJECT_NAME} )
18- set (CPACK_PROJECT_VERSION ${SEVEN_BIT_DI_VERSION} )
17+ set (CPACK_PROJECT_NAME ${CMAKE_PROJECT_NAME} )
18+ set (CPACK_PROJECT_VERSION ${_7BIT_DI_VERSION} )
19+ set (CPACK_PACKAGE_VENDOR "github.com/7bitcoder/7bitDI" )
20+ set (CPACK_PACKAGE_CONTACT "https://${CPACK_PACKAGE_VENDOR} " )
21+ set (CPACK_PACKAGE_VERSION_MAJOR ${_7BIT_DI_VERSION_MAJOR} )
22+ set (CPACK_PACKAGE_VERSION_MINOR ${_7BIT_DI_VERSION_MINOR} )
23+ set (CPACK_PACKAGE_VERSION_PATCH ${_7BIT_DI_VERSION_PATCH} )
24+ set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "7bitInjector is a simple C++ dependency injection library" )
25+ set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR} /LICENSE" )
26+ set (CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR} /README.md" )
27+ set (CPACK_SOURCE_GENERATOR "TGZ;ZIP" )
1928
2029set (CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR} /publish)
2130
2231set (CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} :\$ORIGIN/../bin:\$ORIGIN)
2332
24- set (SEVEN_BIT_DI_HEADERS_DIR "${CMAKE_SOURCE_DIR} /Include" )
33+ set (_7BIT_DI_HEADERS_DIR "${CMAKE_SOURCE_DIR} /Include" )
2534
26- file (GLOB SEVEN_BIT_DI_TOP_HEADERS "${SEVEN_BIT_DI_HEADERS_DIR } /SevenBit/DI/*.hpp" )
27- file (GLOB SEVEN_BIT_DI_DETAILS_HEADERS "${SEVEN_BIT_DI_HEADERS_DIR } /SevenBit/DI/Details/*.hpp" )
28- file (GLOB SEVEN_BIT_DI_IMPL_HEADERS "${SEVEN_BIT_DI_HEADERS_DIR } /SevenBit/DI/Impl/*.hpp" )
29- set (SEVEN_BIT_DI_ALL_HEADERS ${SEVEN_BIT_DI_TOP_HEADERS } ${SEVEN_BIT_DI_DETAILS_HEADERS } ${SEVEN_BIT_DI_IMPL_HEADERS } )
35+ file (GLOB _7BIT_DI_TOP_HEADERS "${_7BIT_DI_HEADERS_DIR } /SevenBit/DI/*.hpp" )
36+ file (GLOB _7BIT_DI_DETAILS_HEADERS "${_7BIT_DI_HEADERS_DIR } /SevenBit/DI/Details/*.hpp" )
37+ file (GLOB _7BIT_DI_IMPL_HEADERS "${_7BIT_DI_HEADERS_DIR } /SevenBit/DI/Impl/*.hpp" )
38+ set (_7BIT_DI_ALL_HEADERS ${_7BIT_DI_TOP_HEADERS } ${_7BIT_DI_DETAILS_HEADERS } ${_7BIT_DI_IMPL_HEADERS } )
3039
31- source_group ("Header Files\\ SevenBit" FILES ${SEVEN_BIT_DI_TOP_HEADERS } )
32- source_group ("Header Files\\ SevenBit\\ Details" FILES ${SEVEN_BIT_DI_DETAILS_HEADERS } )
33- source_group ("Header Files\\ SevenBit\\ Details\\ Impl" FILES ${SEVEN_BIT_DI_IMPL_HEADERS } )
40+ source_group ("Header Files\\ SevenBit" FILES ${_7BIT_DI_TOP_HEADERS } )
41+ source_group ("Header Files\\ SevenBit\\ Details" FILES ${_7BIT_DI_DETAILS_HEADERS } )
42+ source_group ("Header Files\\ SevenBit\\ Details\\ Impl" FILES ${_7BIT_DI_IMPL_HEADERS } )
3443
35- # build shared option
36- option (SEVEN_BIT_DI_BUILD_SHARED "Build shared library" OFF )
44+ option (_7BIT_DI_LIBRARY_TYPE "Library build type: Shared;Static;HeaderOnly" "Static" )
3745
38- # build position independent code
39- option (SEVEN_BIT_DI_BUILD_PIC "Build position independent code (-fPIC)" OFF )
46+ option (_7BIT_DI_LIBRARY_TYPE_VALUES "List of possible BUILD_LIBRARY_Type values" "Shared;Static;HeaderOnly" )
4047
41- # example options
42- option (SEVEN_BIT_DI_BUILD_EXAMPLES "Build example" OFF )
43- option (SEVEN_BIT_DI_BUILD_EXAMPLES_HO "Build header only example" OFF )
48+ set_property (CACHE _7BIT_DI_LIBRARY_TYPE PROPERTY STRINGS ${_7BIT_DI_LIBRARY_TYPE_VALUES} )
4449
45- # testing options
46- option (SEVEN_BIT_DI_BUILD_TESTS "Build tests" OFF )
47- option (SEVEN_BIT_DI_BUILD_TESTS_HO "Build tests using the header only version" OFF )
50+ option (_7BIT_DI_BUILD_SHARED "Build shared library" OFF )
4851
49- # build documentation option (requires sphinx and doxygen installed)
50- option (SEVEN_BIT_DI_BUILD_DOCS "Turn on to build documentation" OFF )
52+ option (_7BIT_DI_BUILD_PIC "Build position independent code (-fPIC)" OFF )
5153
52- if (SEVEN_BIT_DI_BUILD_PIC)
54+ option (_7BIT_DI_BUILD_EXAMPLES "Build example" OFF )
55+
56+ option (_7BIT_DI_BUILD_TESTS "Build tests" OFF )
57+
58+ option (_7BIT_DI_BUILD_DOCS "Turn on to build documentation (requires sphinx and doxygen installed)" OFF )
59+
60+ option (_7BIT_DI_INSTALL "Installs 7bitDI" OFF )
61+
62+ if (_7BIT_DI_BUILD_PIC)
5363 set (CMAKE_POSITION_INDEPENDENT_CODE ON )
5464endif ()
5565
66+ if (_7BIT_DI_LIBRARY_TYPE STREQUAL "Shared" )
67+ set (_7BIT_DI_BUILD_LIBRARY_TYPE "Shared" )
68+ set (_7BIT_DI_SHARED_LIB true )
69+ elseif (_7BIT_DI_LIBRARY_TYPE STREQUAL "HeaderOnly" )
70+ set (_7BIT_DI_BUILD_LIBRARY_TYPE "HeaderOnly" )
71+ set (_7BIT_DI_HEADER_ONLY_LIB true )
72+ else ()
73+ set (_7BIT_DI_BUILD_LIBRARY_TYPE "Static" )
74+ set (_7BIT_DI_STATIC_LIB true )
75+ endif ()
76+
5677set (PROJECT_CONFIG_IN ${CMAKE_SOURCE_DIR} /Cmake/7bitDIConfig.cmake.in)
5778set (PROJECT_CONFIG_OUT ${CMAKE_BINARY_DIR} /7bitDIConfig.cmake)
5879set (CONFIG_TARGETS_FILE 7bitDIConfigTargets.cmake)
5980set (VERSIONS_CONFIG_FILE ${CMAKE_BINARY_DIR} /7bitDIConfigVersion.cmake)
60- set (EXPORT_DEST_DIR cmake/7bitDI)
81+ set (EXPORT_DEST_DIR lib/ cmake/7bitDI)
6182
62- configure_file (${CMAKE_SOURCE_DIR} /Include /SevenBit/DI/Version .hpp.input ${CMAKE_SOURCE_DIR} /Include /SevenBit/DI/Version .hpp)
83+ configure_file (${CMAKE_SOURCE_DIR} /Include /SevenBit/DI/CmakeDef .hpp.input ${CMAKE_SOURCE_DIR} /Include /SevenBit/DI/CmakeDef .hpp)
6384
6485set (INFOS
65- "${SEVEN_BIT_DI_PROJECT_NAME } version: ${SEVEN_BIT_DI_VERSION } "
66- "${SEVEN_BIT_DI_PROJECT_NAME } build as shared library ${SEVEN_BIT_DI_BUILD_SHARED} "
86+ "${CMAKE_PROJECT_NAME } version: ${_7BIT_DI_VERSION } "
87+ "${CMAKE_PROJECT_NAME } build as ${_7BIT_DI_BUILD_LIBRARY_TYPE} library "
6788 "=================================================="
68- "Build tests: ${SEVEN_BIT_DI_BUILD_TESTS} "
69- "Build tests header only: ${SEVEN_BIT_DI_BUILD_TESTS_HO} "
70- "Build examples: ${SEVEN_BIT_DI_BUILD_EXAMPLES} "
71- "Build examples header only: ${SEVEN_BIT_DI_BUILD_EXAMPLES_HO} "
72- "Build documentation: ${SEVEN_BIT_DI_BUILD_DOCS} "
89+ "Build tests: ${_7BIT_DI_BUILD_TESTS} "
90+ "Build examples: ${_7BIT_DI_BUILD_EXAMPLES} "
91+ "Build documentation: ${_7BIT_DI_BUILD_DOCS} "
7392)
7493printInfo("${INFOS} " = 50 7 0)
0 commit comments