11include (Functions)
22
3- set (CPACK_PROJECT_NAME ${PROJECT_NAME} )
4- set (CPACK_PROJECT_VERSION ${PROJECT_VERSION} )
3+ if (NOT CMAKE_BUILD_TYPE )
4+ set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE)
5+ endif ()
56
67set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin)
78set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} /bin)
@@ -13,43 +14,61 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
1314set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} /lib)
1415set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} /lib)
1516
17+ set (CPACK_PROJECT_NAME ${SEVEN_BIT_DI_PROJECT_NAME} )
18+ set (CPACK_PROJECT_VERSION ${SEVEN_BIT_DI_VERSION} )
19+
1620set (CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR} /publish)
1721
18- SET (CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} :\$ORIGIN/../bin:\$ORIGIN)
22+ set (CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} :\$ORIGIN/../bin:\$ORIGIN)
23+
24+ set (SEVEN_BIT_DI_HEADERS_DIR "${CMAKE_SOURCE_DIR} /Include" )
1925
20- set (LIBRARY_TYPE "HeaderOnly" CACHE STRING
21- "Library build type: Shared;Static;HeaderOnly" )
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} )
2230
23- set (LIBRARY_TYPE_VALUES "Shared;Static;HeaderOnly" CACHE STRING
24- "List of possible BUILD_LIBRARY_Type values" )
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} )
2534
26- set_property (CACHE LIBRARY_TYPE PROPERTY STRINGS ${LIBRARY_TYPE_VALUES} )
35+ # build shared option
36+ option (SEVEN_BIT_DI_BUILD_SHARED "Build shared library" OFF )
2737
28- set (BUILD_DOCS false CACHE BOOL "Turn on to build documentation" )
29- set (BUILD_TESTS false CACHE BOOL "Turn on to build tests" )
30- set (BUILD_EXAMPLES false CACHE BOOL "Turn on to build examples" )
38+ # build position independent code
39+ option (SEVEN_BIT_DI_BUILD_PIC "Build position independent code (-fPIC)" OFF )
3140
32- set (SEVEN_BIT_INJECTOR_VERSION ${CMAKE_PROJECT_VERSION} )
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 )
3344
34- if (LIBRARY_TYPE STREQUAL "Shared" )
35- set (BUILD_LIBRARY_TYPE "Shared" )
36- set (SEVEN_BIT_INJECTOR_SHARED_LIB true )
37- elseif (LIBRARY_TYPE STREQUAL "Static" )
38- set (BUILD_LIBRARY_TYPE "Static" )
39- set (SEVEN_BIT_INJECTOR_STATIC_LIB true )
40- else () # headerOnly
41- set (BUILD_LIBRARY_TYPE "HeaderOnly" )
42- set (SEVEN_BIT_INJECTOR_HEADER_ONLY_LIB true )
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 )
48+
49+ # build documentation option (requires sphinx and doxygen installed )
50+ option (SEVEN_BIT_DI_BUILD_DOCS "Turn on to build documentation" OFF )
51+
52+ if (SEVEN_BIT_DI_BUILD_PIC )
53+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
4354endif ()
4455
45- configure_file (Include /SevenBit/DI/CmakeDef.hpp.input ${PROJECT_SOURCE_DIR} /Include /SevenBit/DI/CmakeDef.hpp)
56+ set (PROJECT_CONFIG_IN ${CMAKE_SOURCE_DIR} /Cmake/7bitDIConfig.cmake.in)
57+ set (PROJECT_CONFIG_OUT ${CMAKE_BINARY_DIR} /7bitDIConfig.cmake)
58+ set (CONFIG_TARGETS_FILE 7bitDIConfigTargets.cmake)
59+ set (VERSIONS_CONFIG_FILE ${CMAKE_BINARY_DIR} /7bitDIConfigVersion.cmake)
60+ set (EXPORT_DEST_DIR cmake/7bitDI)
61+
62+ configure_file (${CMAKE_SOURCE_DIR} /Include /SevenBit/DI/Version .hpp.input ${CMAKE_SOURCE_DIR} /Include /SevenBit/DI/Version .hpp)
4663
4764set (INFOS
48- "${CMAKE_PROJECT_NAME } version: ${SEVEN_BIT_INJECTOR_VERSION } "
49- "${CMAKE_PROJECT_NAME } build as ${BUILD_LIBRARY_TYPE} library "
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} "
5067 "=================================================="
51- "Build tests: ${BUILD_TESTS} "
52- "Build examples: ${BUILD_EXAMPLES} "
53- "Build documentation: ${BUILD_DOCS} "
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} "
5473)
5574printInfo("${INFOS} " = 50 7 0)
0 commit comments