mirror of
https://github.com/boostorg/openmethod.git
synced 2026-01-26 06:42:23 +00:00
56 lines
2.4 KiB
CMake
56 lines
2.4 KiB
CMake
# Copyright (c) 2018-2024 Jean-Louis Leroy
|
|
# Distributed under the Boost Software License, Version 1.0.
|
|
# See accompanying file LICENSE_1_0.txt
|
|
# or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
message(STATUS "Boost.OpenMethod: building shared library examples")
|
|
|
|
add_compile_definitions(BOOST_OPENMETHOD_ENABLE_RUNTIME_CHECKS)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# static linking
|
|
|
|
add_library(boost_openmethod-shared SHARED extensions.cpp)
|
|
target_link_libraries(boost_openmethod-shared Boost::openmethod)
|
|
set_target_properties(boost_openmethod-shared PROPERTIES
|
|
ENABLE_EXPORTS ON
|
|
OUTPUT_NAME shared
|
|
)
|
|
|
|
add_executable(boost_openmethod-static static_main.cpp)
|
|
target_link_libraries(boost_openmethod-static Boost::openmethod Boost::dll boost_openmethod-shared)
|
|
add_test(NAME boost_openmethod-static COMMAND boost_openmethod-static)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# dynamic loading, direct virtual_ptrs
|
|
|
|
add_executable(boost_openmethod-dynamic dynamic_main.cpp)
|
|
set_target_properties(boost_openmethod-dynamic PROPERTIES ENABLE_EXPORTS ON)
|
|
target_link_libraries(boost_openmethod-dynamic Boost::openmethod Boost::dll)
|
|
add_dependencies(boost_openmethod-dynamic boost_openmethod-shared)
|
|
if (NOT WIN32)
|
|
add_test(NAME boost_openmethod-dynamic COMMAND boost_openmethod-dynamic)
|
|
endif()
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# dynamic loading, indirect virtual_ptrs
|
|
|
|
add_library(boost_openmethod-indirect_shared SHARED indirect_extensions.cpp)
|
|
target_compile_definitions(
|
|
boost_openmethod-indirect_shared PUBLIC BOOST_OPENMETHOD_DEFAULT_REGISTRY=indirect_registry)
|
|
target_link_libraries(boost_openmethod-indirect_shared PRIVATE Boost::openmethod Boost::dll)
|
|
set_target_properties(boost_openmethod-indirect_shared PROPERTIES
|
|
ENABLE_EXPORTS ON
|
|
OUTPUT_NAME indirect_shared
|
|
)
|
|
|
|
add_executable(boost_openmethod-indirect indirect_main.cpp)
|
|
target_compile_definitions(
|
|
boost_openmethod-indirect PUBLIC BOOST_OPENMETHOD_DEFAULT_REGISTRY=indirect_registry)
|
|
set_target_properties(boost_openmethod-indirect PROPERTIES ENABLE_EXPORTS ON)
|
|
target_link_libraries(boost_openmethod-indirect PRIVATE Boost::openmethod Boost::dll)
|
|
add_dependencies(boost_openmethod-indirect boost_openmethod-indirect_shared)
|
|
if (NOT WIN32)
|
|
add_test(NAME boost_openmethod-indirect COMMAND boost_openmethod-indirect)
|
|
endif()
|