summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt71
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)