Skip to content

Commit 80dc00b

Browse files
committed
add an option for shared lib
1 parent 2140d35 commit 80dc00b

1 file changed

Lines changed: 42 additions & 34 deletions

File tree

CMakeLists.txt

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ option(SUPPORT_TTL "whether support TTL" OFF)
2626
option(OPT_SUPPORT_ZSTD_TRACE "whether support zstd trace" ON)
2727
option(ENABLE_LRB "enable LRB" OFF)
2828
option(ENABLE_3L_CACHE "enable 3LCache" OFF)
29+
option(BUILD_SHARED_LIBS "build shared library" ON)
2930
set(LOG_LEVEL "default" CACHE STRING "change the logging level")
3031
set_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
275265
target_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
291275
target_link_libraries(${PROJECT_NAME} PUBLIC ${dependency_libs})
292-
target_link_libraries(${PROJECT_NAME}_shared PUBLIC ${dependency_libs})
293276

294277
# Set version and properties
295278
set_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
299322
configure_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
307330
install(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
326334
install(EXPORT ${PROJECT_NAME}Targets
327335
FILE ${PROJECT_NAME}Targets.cmake

0 commit comments

Comments
 (0)