#[=======================================================================[.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() set(options) set(oneValueArgs) set(multiValueArgs) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) # Вызов стандартной функции `add_library()` add_library(${TARGET_NAME} SHARED ${ARG_UNPARSED_ARGUMENTS}) # Стандартные пути к заголовочным файлам target_include_directories(${TARGET_NAME} PUBLIC $ PRIVATE $ $ ) if(NOT DEFINED ENV{SAPR_PREFIX}) find_package(Python COMPONENTS Interpeter Development) find_package(pybind11 CONFIG) target_include_directories(${TARGET_NAME} PUBLIC $) target_link_libraries(${TARGET_NAME} PRIVATE pybind11::headers pybind11::pybind11) endif() # Сборка позиционно-независимых объектных файлов нужна # для создания динамической библиотеки set_target_properties(${TARGET_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) target_compile_definitions(${TARGET_NAME} PUBLIC BLOCK_TARGET_MARK) if (NOT WIN32) set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "-Wl,-rpath,$ORIGIN") endif() endfunction()