diff options
author | Fabien Proriol <fabien.proriol@kazoe.org> | 2025-05-22 15:42:13 +0200 |
---|---|---|
committer | Fabien Proriol <fabien.proriol@kazoe.org> | 2025-05-22 15:48:00 +0200 |
commit | c842548fef050ac5f8b56a5fcb4f579820247434 (patch) | |
tree | 68bce34d0932db0157761635a010695c5e9616e3 /CMakeLists.txt |
Initial Commit
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..acb7c5d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,71 @@ +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) |