@@ -95,8 +95,8 @@ set(PACKAGE_VERSION "${PROJECT_VERSION}")
9595set (VERSION "${PROJECT_VERSION} " )
9696configure_file (${CMAKE_CURRENT_LIST_DIR} /mbus/config.h.in ${CMAKE_CURRENT_LIST_DIR} /config.h @ONLY)
9797
98- add_library (
99- ${PROJECT_NAME}
98+ # list of source files
99+ add_library (objlib OBJECT
100100 "${CMAKE_CURRENT_LIST_DIR} /mbus/mbus-protocol.c"
101101 "${CMAKE_CURRENT_LIST_DIR} /mbus/mbus-protocol.h"
102102 "${CMAKE_CURRENT_LIST_DIR} /mbus/mbus-tcp.c"
@@ -107,6 +107,14 @@ add_library(
107107 "${CMAKE_CURRENT_LIST_DIR} /mbus/mbus-protocol-aux.h"
108108 "${CMAKE_CURRENT_LIST_DIR} /mbus/mbus-serial.c"
109109 "${CMAKE_CURRENT_LIST_DIR} /mbus/mbus-serial.h" )
110+
111+ # shared and static libraries built from the same object files
112+ add_library (${PROJECT_NAME} SHARED $<TARGET_OBJECTS:objlib>)
113+ add_library (libmbus_static STATIC $<TARGET_OBJECTS:objlib>)
114+
115+ set_property (TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1)
116+ set_target_properties (libmbus_static PROPERTIES OUTPUT_NAME mbus)
117+
110118target_include_directories (
111119 ${PROJECT_NAME}
112120 PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} >" "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
@@ -175,7 +183,6 @@ install(
175183 TARGETS ${PROJECT_NAME}
176184 EXPORT ${PROJECT_NAME} Targets
177185 LIBRARY DESTINATION "${INSTALL_LIB_DIR} " COMPONENT lib
178- ARCHIVE DESTINATION "${INSTALL_LIB_DIR} " COMPONENT dev
179186 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR} " COMPONENT lib)
180187install (
181188 EXPORT ${PROJECT_NAME} Targets
@@ -199,6 +206,10 @@ install(
199206 FILES_MATCHING
200207 PATTERN "*.h" )
201208
209+ install (
210+ TARGETS libmbus_static
211+ ARCHIVE DESTINATION "${INSTALL_LIB_DIR} " COMPONENT dev)
212+
202213# ##############################################################################
203214# package
204215# mkdir build ; cd build ; cmake .. -DLIBMBUS_PACKAGE_DEB=ON ; cpack ..
0 commit comments