cmake_minimum_required(VERSION 3.14) project(KaZoe-Settings VERSION 1.0.0 LANGUAGES CXX) option(WITH_PYTHON "Create python binding" ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package (Threads REQUIRED) add_library(KaZoeSettings SHARED src/settings.h src/settings.cpp src/changewatcher.h src/changewatcher.cpp ) set_target_properties(KaZoeSettings PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION 1) set_target_properties(KaZoeSettings PROPERTIES PUBLIC_HEADER "src/settings.h") target_link_libraries(KaZoeSettings PRIVATE Threads::Threads) add_executable(ksettings cmd/ksettings.cpp) target_include_directories(ksettings PRIVATE src) target_link_libraries(ksettings KaZoeSettings) install(TARGETS KaZoeSettings EXPORT "KaZoeSettingsTargets" LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_PREFIX}/include/KaZoe/" ) install(TARGETS ksettings LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) if(WITH_PYTHON) message(STATUS "Build with python binding") find_package(Python3 COMPONENTS Interpreter Development REQUIRED) set(PYTHON_MODULE_EXTENSION ".so" CACHE INTERNAL "Cross python lib extension") find_package(pybind11 REQUIRED) include_directories(${Python3_INCLUDE_DIRS}) pybind11_add_module(PyKaZoeSettings python/bindings.cpp) set_target_properties(PyKaZoeSettings PROPERTIES OUTPUT_NAME "KaZoeSettings") target_link_libraries(PyKaZoeSettings PUBLIC KaZoeSettings ${PYTHON_LIBRARY}) install(TARGETS PyKaZoeSettings LIBRARY DESTINATION ${Python3_SITEARCH}) endif(WITH_PYTHON) # CMake Module include(CMakePackageConfigHelpers) write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/generated/KaZoeSettingsConfigVersion.cmake" COMPATIBILITY SameMajorVersion ) configure_package_config_file( "cmake/Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/generated/KaZoeSettingsConfig.cmake" INSTALL_DESTINATION "lib/cmake/${PROJECT_NAME}" ) install( FILES "${CMAKE_CURRENT_BINARY_DIR}/generated/KaZoeSettingsConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/generated/KaZoeSettingsConfigVersion.cmake" DESTINATION "lib/cmake/${PROJECT_NAME}" ) install( EXPORT "KaZoeSettingsTargets" DESTINATION "lib/cmake/${PROJECT_NAME}" ) include(cmake/CPack.cmake)