#[=======================================================================[.rst: myx_add_sapr_block ------------------ Вспомогательная функция для создания блока САПР:: myx_add_sapr_block(TARGET_NAME) Обязательные параметры: `TARGET_NAME` - имя библиотеки. Все остальные параметры передаются в стандартную функцию `add_library()` #]=======================================================================] include_guard(GLOBAL) include(CMakePackageConfigHelpers) include(GenerateExportHeader) if(${CMAKE_VERSION} VERSION_LESS "3.17.0") set(MYX_CMAKE_LIB_DIR_BACKPORT "${CMAKE_CURRENT_LIST_DIR}") endif() function(myx_add_sapr_block TARGET_NAME) if(${CMAKE_VERSION} VERSION_LESS "3.17.0") set(CMAKE_CURRENT_FUNCTION_LIST_DIR ${MYX_CMAKE_LIB_DIR_BACKPORT}) endif() # Вызов стандартной функции `add_library()` if(DEFINED ENV{SAPR_PREFIX}) add_library(${TARGET_NAME} SHARED ${ARG_UNPARSED_ARGUMENTS}) else() add_library(${TARGET_NAME} STATIC ${ARG_UNPARSED_ARGUMENTS}) endif() # Стандартные пути к заголовочным файлам target_include_directories(${TARGET_NAME} PUBLIC $ PRIVATE $ $ ) # Сборка позиционно-независимых объектных файлов нужна # для создания динамической библиотеки set_target_properties(${TARGET_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) target_compile_definitions(${TARGET_NAME} PUBLIC BLOCK_TARGET_MARK) if(DEFINED ENV{SAPR_PREFIX}) if(NOT WIN32) set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "-Wl,-rpath,$ORIGIN") endif() else() find_package(Python3 REQUIRED COMPONENTS Interpreter Development) target_include_directories(${TARGET_NAME} ${Python3_INCLUDE_DIRS}) find_package(pybind11 REQUIRED) target_include_directories("${pybind11_INCLUDE_DIR}") target_include_directories(${TARGET_NAME} PUBLIC $) target_link_libraries(${TARGET_NAME} PRIVATE pybind11::headers pybind11::pybind11) endif() endfunction()