summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt115
1 files changed, 90 insertions, 25 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index acb7c5d..9d06877 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,34 +1,38 @@
cmake_minimum_required(VERSION 3.14)
-project(KaZoe-Settings VERSION 1.0.0 LANGUAGES CXX)
+project(KzSettings VERSION 1.0.0 LANGUAGES CXX)
-option(WITH_PYTHON "Create python binding" ON)
+option(WITH_PYTHON "Create python binding" ON)
+option(WITH_QT "Create Qt6 library and QML Module" ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
+include(GNUInstallDirs)
find_package (Threads REQUIRED)
-add_library(KaZoeSettings SHARED
- src/settings.h src/settings.cpp
+add_library(KzSettings SHARED
+ src/kzsettings.h src/kzsettings.cpp
src/changewatcher.h src/changewatcher.cpp
+ cmake/Config.cmake.in
+ cmake/CPack.cmake
)
-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)
+set_target_properties(KzSettings PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION 1)
+set_target_properties(KzSettings PROPERTIES PUBLIC_HEADER "src/kzsettings.h")
+target_link_libraries(KzSettings PRIVATE Threads::Threads)
-add_executable(ksettings cmd/ksettings.cpp)
-target_include_directories(ksettings PRIVATE src)
-target_link_libraries(ksettings KaZoeSettings)
+add_executable(kzsettings cmd/kzsettings.cpp)
+target_include_directories(kzsettings PRIVATE src)
+target_link_libraries(kzsettings KzSettings)
-install(TARGETS KaZoeSettings
- EXPORT "KaZoeSettingsTargets"
+install(TARGETS KzSettings
+ EXPORT "KzSettingsTargets"
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_PREFIX}/include/KaZoe/"
)
-install(TARGETS ksettings
+install(TARGETS kzsettings
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
@@ -39,33 +43,94 @@ if(WITH_PYTHON)
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})
+ pybind11_add_module(PyKzSettings python/bindings.cpp)
+ set_target_properties(PyKzSettings PROPERTIES OUTPUT_NAME "KzSettings")
+ target_link_libraries(PyKzSettings PUBLIC KzSettings ${PYTHON_LIBRARY})
+ if(NOT PYTHONPATH)
+ set(PYTHONPATH ${Python3_SITEARCH})
+ endif(NOT PYTHONPATH)
+ install(TARGETS PyKzSettings LIBRARY DESTINATION ${PYTHONPATH})
endif(WITH_PYTHON)
-# CMake Module
include(CMakePackageConfigHelpers)
+
+if(WITH_QT)
+ if(NOT DEFINED QML_MODULE_INSTALL_PATH)
+ if(DEFINED OE_QMAKE_PATH_QML)
+ set(QML_MODULE_INSTALL_PATH ${OE_QMAKE_PATH_QML} )
+ else()
+ set(QML_MODULE_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/qml )
+ endif()
+ endif()
+ message(STATUS "Build with Qt module in ${QML_MODULE_INSTALL_PATH}")
+
+ find_package(Qt6 COMPONENTS Core Qml REQUIRED)
+ add_library(KzQSettings SHARED
+ qt/kzqsettings.h qt/kzqsettings.cpp
+ qt/kzqproperty.h qt/kzqproperty.cpp
+ qt/cmake/Config.cmake.in
+ )
+ target_link_libraries(KzQSettings PUBLIC Qt6::Core KzSettings)
+ set_target_properties(KzQSettings PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION 1)
+ set(KzQSettingsPublicHeader qt/kzqsettings.h qt/kzqproperty.h)
+ set_target_properties(KzQSettings PROPERTIES PUBLIC_HEADER "${KzQSettingsPublicHeader}")
+ install(TARGETS KzQSettings
+ EXPORT "KzQSettingsTargets"
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_PREFIX}/include/KaZoe/"
+ )
+ write_basic_package_version_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/generated/KzQSettingsConfigVersion.cmake" COMPATIBILITY SameMajorVersion
+ )
+
+ configure_package_config_file(
+ "qt/cmake/Config.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/generated/KzQSettingsConfig.cmake"
+ INSTALL_DESTINATION "lib/cmake/KzQSettings"
+ )
+
+ install(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/generated/KzQSettingsConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/generated/KzQSettingsConfigVersion.cmake"
+ DESTINATION "lib/cmake/KzQSettings"
+ )
+
+ install(
+ EXPORT "KzQSettingsTargets"
+ DESTINATION "lib/cmake/KzQSettings"
+ )
+
+ set(PLUGIN_SOURCES
+ qt/kzqsettings_plugin.h qt/kzqsettings_plugin.cpp
+ qt/qml/qmldir
+ )
+
+ add_library(KzQSettingsPlugin SHARED ${PLUGIN_SOURCES})
+ target_link_libraries(KzQSettingsPlugin PRIVATE Qt6::Qml KzQSettings)
+ install(TARGETS KzQSettingsPlugin DESTINATION ${QML_MODULE_INSTALL_PATH}/org/kazoe/settings)
+ install(FILES qt/qml/qmldir DESTINATION ${QML_MODULE_INSTALL_PATH}/org/kazoe/settings)
+endif(WITH_QT)
+
+
write_basic_package_version_file(
- "${CMAKE_CURRENT_BINARY_DIR}/generated/KaZoeSettingsConfigVersion.cmake" COMPATIBILITY SameMajorVersion
+ "${CMAKE_CURRENT_BINARY_DIR}/generated/KzSettingsConfigVersion.cmake" COMPATIBILITY SameMajorVersion
)
configure_package_config_file(
"cmake/Config.cmake.in"
- "${CMAKE_CURRENT_BINARY_DIR}/generated/KaZoeSettingsConfig.cmake"
- INSTALL_DESTINATION "lib/cmake/${PROJECT_NAME}"
+ "${CMAKE_CURRENT_BINARY_DIR}/generated/KzSettingsConfig.cmake"
+ INSTALL_DESTINATION "lib/cmake/KzSettings"
)
install(
- FILES "${CMAKE_CURRENT_BINARY_DIR}/generated/KaZoeSettingsConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/generated/KaZoeSettingsConfigVersion.cmake"
- DESTINATION "lib/cmake/${PROJECT_NAME}"
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/generated/KzSettingsConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/generated/KzSettingsConfigVersion.cmake"
+ DESTINATION "lib/cmake/KzSettings"
)
install(
- EXPORT "KaZoeSettingsTargets"
- DESTINATION "lib/cmake/${PROJECT_NAME}"
+ EXPORT "KzSettingsTargets"
+ DESTINATION "lib/cmake/KzSettings"
)
include(cmake/CPack.cmake)