@@ -26,6 +26,7 @@ option(SUPPORT_TTL "whether support TTL" OFF)
2626option (OPT_SUPPORT_ZSTD_TRACE "whether support zstd trace" ON )
2727option (ENABLE_LRB "enable LRB" OFF )
2828option (ENABLE_3L_CACHE "enable 3LCache" OFF )
29+ option (BUILD_SHARED_LIBS "build shared library" ON )
2930set (LOG_LEVEL "default" CACHE STRING "change the logging level" )
3031set_property (CACHE LOG_LEVEL PROPERTY STRINGS ERROR WARN INFO DEBUG VERBOSE DEFAULT )
3132
@@ -260,17 +261,6 @@ add_library(${PROJECT_NAME} STATIC
260261 $<TARGET_OBJECTS :mrcProfiler_lib >
261262)
262263
263- add_library (${PROJECT_NAME} _shared SHARED
264- $<TARGET_OBJECTS :cache_lib_c >
265- $<TARGET_OBJECTS :cache_lib_cpp >
266- $<TARGET_OBJECTS :traceReader_lib >
267- $<TARGET_OBJECTS :profiler_lib >
268- $<TARGET_OBJECTS :dataStructure_lib >
269- $<TARGET_OBJECTS :utils_lib >
270- $<TARGET_OBJECTS :traceAnalyzer_lib >
271- $<TARGET_OBJECTS :mrcProfiler_lib >
272- )
273-
274264# Set include directories for the unified library
275265target_include_directories (${PROJECT_NAME} INTERFACE
276266 # Use separate BUILD_INTERFACE for each directory to avoid list expansion issues
@@ -280,20 +270,53 @@ target_include_directories(${PROJECT_NAME} INTERFACE
280270 $<INSTALL_INTERFACE :${CMAKE_INSTALL_INCLUDEDIR} >
281271)
282272
283- target_include_directories (${PROJECT_NAME} _shared INTERFACE
284- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /libCacheSim /include >
285- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /libCacheSim /utils /include >
286- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /libCacheSim />
287- $<INSTALL_INTERFACE :${CMAKE_INSTALL_INCLUDEDIR} >
288- )
289273
290274# Link the static library to all required dependencies
291275target_link_libraries (${PROJECT_NAME} PUBLIC ${dependency_libs} )
292- target_link_libraries (${PROJECT_NAME} _shared PUBLIC ${dependency_libs} )
293276
294277# Set version and properties
295278set_target_properties (${PROJECT_NAME} PROPERTIES VERSION ${${PROJECT_NAME}_VERSION} )
296- set_target_properties (${PROJECT_NAME} _shared PROPERTIES VERSION ${${PROJECT_NAME}_VERSION} )
279+
280+ # Install the static library
281+ install (TARGETS ${PROJECT_NAME}
282+ EXPORT ${PROJECT_NAME} Targets
283+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
284+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
285+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
286+ )
287+
288+
289+ if (BUILD_SHARED_LIBS )
290+ add_library (${PROJECT_NAME} _shared SHARED
291+ $<TARGET_OBJECTS :cache_lib_c >
292+ $<TARGET_OBJECTS :cache_lib_cpp >
293+ $<TARGET_OBJECTS :traceReader_lib >
294+ $<TARGET_OBJECTS :profiler_lib >
295+ $<TARGET_OBJECTS :dataStructure_lib >
296+ $<TARGET_OBJECTS :utils_lib >
297+ $<TARGET_OBJECTS :traceAnalyzer_lib >
298+ $<TARGET_OBJECTS :mrcProfiler_lib >
299+ )
300+
301+ target_include_directories (${PROJECT_NAME} _shared INTERFACE
302+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /libCacheSim /include >
303+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /libCacheSim /utils /include >
304+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /libCacheSim />
305+ $<INSTALL_INTERFACE :${CMAKE_INSTALL_INCLUDEDIR} >
306+ )
307+
308+ target_link_libraries (${PROJECT_NAME} _shared PUBLIC ${dependency_libs} )
309+
310+ set_target_properties (${PROJECT_NAME} _shared PROPERTIES VERSION ${${PROJECT_NAME}_VERSION} )
311+
312+ install (TARGETS ${PROJECT_NAME} _shared
313+ EXPORT ${PROJECT_NAME} Targets
314+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
315+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
316+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
317+ )
318+ endif ()
319+
297320
298321# Configuration files
299322configure_file (${PROJECT_SOURCE_DIR} /${PROJECT_NAME}.pc.in ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME}.pc @ONLY )
@@ -307,21 +330,6 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
307330install (FILES ${CMAKE_CURRENT_BINARY_DIR} /Find${PROJECT_NAME} .cmake
308331 DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} COMPONENT dev)
309332
310- # Install the unified library
311- install (TARGETS ${PROJECT_NAME}
312- EXPORT ${PROJECT_NAME} Targets
313- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
314- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
315- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
316- )
317-
318- install (TARGETS ${PROJECT_NAME} _shared
319- EXPORT ${PROJECT_NAME} Targets
320- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
321- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
322- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
323- )
324-
325333# Install the export file
326334install (EXPORT ${PROJECT_NAME} Targets
327335 FILE ${PROJECT_NAME} Targets .cmake
0 commit comments