cmake_minimum_required(VERSION 3.14) set(NDARRAY_VERSION 0.1.0) set(NDARRAY_SOVERSION 0.1.0) include(GNUInstallDirs) project(ndarray LANGUAGES CXX VERSION ${NDARRAY_VERSION} set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_VISIBILITY_PRESET hidden) IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) SET(CMAKE_INSTALL_PREFIX /opt/ndarray CACHE PATH "comment" FORCE) ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set( NDARRAY_SOURCES src/ndarray.cpp ) set( NDARRAY_HEADERS include/ndarray.hpp ) find_package(pybind11 REQUIRED) add_library(ndarray SHARED ${NDARRAY_SOURCES} ${NDARRAY_HEADERS} ) set_target_properties(ndarray PROPERTIES VERSION ${NDARRAY_VERSION} SOVERSION ${NDARRAY_SOVERSION} LINKER_LANGUAGE CXX MAP_IMPORTED_CONFIG_COVERAGE "DEBUG" ) target_link_libraries(ndarray PUBLIC pybind11::embed) target_include_directories(${PROJECT_NAME} PUBLIC $ $ PRIVATE src) install( TARGETS ndarray EXPORT ndarrayConfig LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_BINDIR} ) install( DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ndarray ) export( TARGETS ${PROJECT_NAME} FILE ndarrayConfig.cmake NAMESPACE ndarray:: FILE "${CMAKE_CURRENT_BINARY_DIR}/ndarrayConfig.cmake" ) install( EXPORT ndarrayConfig DESTINATION "${CMAKE_INSTALL_DATADIR}/ndarray/cmake" ) target_compile_definitions(ndarray PRIVATE NDARRAY_LIBRARY )