Add option to use header-only Boost::container

This commit is contained in:
zjyhjqs
2024-11-10 23:20:53 +08:00
parent b13c1fe8a4
commit 341cda2406

View File

@@ -6,22 +6,31 @@ cmake_minimum_required(VERSION 3.5...3.16)
project(boost_container VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES C CXX) project(boost_container VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES C CXX)
add_library(boost_container option(BOOST_CONTAINER_HEADER_ONLY "Disable Extended Allocators and some Polymorphic Memory Resources classes" OFF)
src/alloc_lib.c
src/dlmalloc.cpp if(BOOST_CONTAINER_HEADER_ONLY)
src/global_resource.cpp add_library(boost_container INTERFACE)
src/monotonic_buffer_resource.cpp set(_populate INTERFACE)
src/pool_resource.cpp else()
src/synchronized_pool_resource.cpp add_library(boost_container
src/unsynchronized_pool_resource.cpp src/alloc_lib.c
) src/dlmalloc.cpp
src/global_resource.cpp
src/monotonic_buffer_resource.cpp
src/pool_resource.cpp
src/synchronized_pool_resource.cpp
src/unsynchronized_pool_resource.cpp
)
set(_populate PUBLIC)
endif()
add_library(Boost::container ALIAS boost_container) add_library(Boost::container ALIAS boost_container)
target_include_directories(boost_container PUBLIC include) target_include_directories(boost_container ${_populate} include)
target_link_libraries(boost_container target_link_libraries(boost_container
PUBLIC ${_populate}
Boost::assert Boost::assert
Boost::config Boost::config
Boost::intrusive Boost::intrusive
@@ -29,15 +38,17 @@ target_link_libraries(boost_container
) )
target_compile_definitions(boost_container target_compile_definitions(boost_container
PUBLIC BOOST_CONTAINER_NO_LIB ${_populate} BOOST_CONTAINER_NO_LIB
# Source files already define BOOST_CONTAINER_SOURCE # Source files already define BOOST_CONTAINER_SOURCE
# PRIVATE BOOST_CONTAINER_SOURCE # PRIVATE BOOST_CONTAINER_SOURCE
) )
if(BUILD_SHARED_LIBS) if(NOT BOOST_CONTAINER_HEADER_ONLY)
target_compile_definitions(boost_container PUBLIC BOOST_CONTAINER_DYN_LINK) if(BUILD_SHARED_LIBS)
else() target_compile_definitions(boost_container ${_populate} BOOST_CONTAINER_DYN_LINK)
target_compile_definitions(boost_container PUBLIC BOOST_CONTAINER_STATIC_LINK) else()
target_compile_definitions(boost_container ${_populate} BOOST_CONTAINER_STATIC_LINK)
endif()
endif() endif()
if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt") if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")