diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ea3497..9cb3229 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,17 @@ set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) # Qt5 -find_package(Qt5 COMPONENTS Core Network Gui Widgets DBus Concurrent Sql REQUIRED) +find_package( + Qt5 + COMPONENTS + Core + Network + Gui + Widgets + DBus + Concurrent + Sql + REQUIRED) # Автоматически генерируемый заголовочный файл cmlib_config_hpp_generate() @@ -44,9 +54,11 @@ add_subdirectory(src/myx/math) add_subdirectory(src/myx/redis) # Примеры -if (BUILD_EXAMPLES) +if(BUILD_EXAMPLES) add_subdirectory(examples/filesystem) add_subdirectory(examples/qt) + + add_dependencies(example-filesystem-minimal create_auxilary_symlinks) endif() # Документация diff --git a/cmake/cmlib b/cmake/cmlib index c9c13df..d116e4d 160000 --- a/cmake/cmlib +++ b/cmake/cmlib @@ -1 +1 @@ -Subproject commit c9c13df5527f59c4f9eff6229152205aa296605b +Subproject commit d116e4db89b6a4593551a85c4e9716e87a48ec94 diff --git a/cmake/doc b/cmake/doc index bab7df6..62d017b 160000 --- a/cmake/doc +++ b/cmake/doc @@ -1 +1 @@ -Subproject commit bab7df69d9fdf1f22db7b2173c9f1f40de2c476b +Subproject commit 62d017b2e976df437afb27716b910ad66333ca06 diff --git a/cmake/etc/Variables.cmake b/cmake/etc/Variables.cmake index d8d2d34..6527d36 100644 --- a/cmake/etc/Variables.cmake +++ b/cmake/etc/Variables.cmake @@ -6,6 +6,7 @@ set(DOXYGEN_GENERATE_LATEX YES) set(DOXYGEN_GENERATE_HTML YES) set(DOXYGEN_GENERATE_SQLITE YES) +set(CPACK_COMPONENTS_ALL EXAMPLES) set(CPACK_GENERATOR "TXZ;DEB") set(CPACK_PACKAGE_CONTACT "Andrei Astafev ") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Mixed functions") diff --git a/cmake/generators b/cmake/generators index b01bc7a..c015300 160000 --- a/cmake/generators +++ b/cmake/generators @@ -1 +1 @@ -Subproject commit b01bc7a52e091421be98f8bf670232402e17c3fe +Subproject commit c015300d63005d0d5f8a57e5b42c6d898bab94d6 diff --git a/examples/filesystem/01_minimal/CMakeLists.txt b/examples/filesystem/01_minimal/CMakeLists.txt index a3a92ea..eb10fd2 100644 --- a/examples/filesystem/01_minimal/CMakeLists.txt +++ b/examples/filesystem/01_minimal/CMakeLists.txt @@ -2,9 +2,7 @@ set(current_target example-filesystem-minimal) # Список файлов исходных текстов -set(current_target_sources - ${CMAKE_CURRENT_SOURCE_DIR}/minimal.cpp - ) +set(current_target_sources ${CMAKE_CURRENT_SOURCE_DIR}/minimal.cpp) # Путь поиска библиотек внутри проекта link_directories(${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) @@ -24,8 +22,8 @@ add_format_sources(${current_target} ${current_target_sources} ${current_target_ add_dependencies(${current_target} base) add_dependencies(${current_target} filesystem) -# Qt5 -# qt_translation(TARGET ${current_target} TS_DIR ${CMAKE_SOURCE_DIR}/l10n LANGUAGES ru_RU) +# Qt5 qt_translation(TARGET ${current_target} TS_DIR ${CMAKE_SOURCE_DIR}/l10n +# LANGUAGES ru_RU) target_include_directories(${current_target} PRIVATE ${CMAKE_SOURCE_DIR}/src) target_include_directories(${current_target} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) target_compile_options(${current_target} PUBLIC "${Qt5Core_EXECUTABLE_COMPILE_FLAGS}") @@ -34,13 +32,10 @@ target_link_libraries(${current_target} myx-filesystem) target_link_libraries(${current_target} Qt5::Core) target_link_libraries(${current_target} Threads::Threads) - # Имя выходного файла для цели -set_target_properties(${current_target} - PROPERTIES - OUTPUT_NAME filesystem-minimal - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - ) +set_target_properties( + ${current_target} PROPERTIES OUTPUT_NAME filesystem-minimal RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) add_sanitizers(${current_target}) @@ -49,4 +44,4 @@ add_sanitizers(${current_target}) add_dependencies(${current_target} create_auxilary_symlinks) # Правила для установки -install(TARGETS ${current_target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(TARGETS ${current_target} COMPONENT EXAMPLES RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/examples/filesystem/CMakeLists.txt b/examples/filesystem/CMakeLists.txt index d86db10..5e9d165 100644 --- a/examples/filesystem/CMakeLists.txt +++ b/examples/filesystem/CMakeLists.txt @@ -1,2 +1 @@ add_subdirectory(01_minimal) - diff --git a/examples/qt/01_translators/CMakeLists.txt b/examples/qt/01_translators/CMakeLists.txt index 94f5548..5a770ef 100644 --- a/examples/qt/01_translators/CMakeLists.txt +++ b/examples/qt/01_translators/CMakeLists.txt @@ -2,9 +2,7 @@ set(current_target example-qt-translators) # Список файлов исходных текстов -set(current_target_sources - ${CMAKE_CURRENT_SOURCE_DIR}/translators.cpp - ) +set(current_target_sources ${CMAKE_CURRENT_SOURCE_DIR}/translators.cpp) # Путь поиска библиотек внутри проекта link_directories(${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) @@ -34,11 +32,9 @@ target_link_libraries(${current_target} myx-qt) target_link_libraries(${current_target} Qt5::Core) # Имя выходного файла для цели -set_target_properties(${current_target} - PROPERTIES - OUTPUT_NAME qt-translators - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - ) +set_target_properties( + ${current_target} PROPERTIES OUTPUT_NAME qt-translators RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) add_sanitizers(${current_target}) @@ -47,4 +43,4 @@ add_sanitizers(${current_target}) add_dependencies(${current_target} create_auxilary_symlinks) # Правила для установки -install(TARGETS ${current_target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(TARGETS ${current_target} COMPONENT EXAMPLES RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/examples/qt/CMakeLists.txt b/examples/qt/CMakeLists.txt index cb905ec..ff85cdb 100644 --- a/examples/qt/CMakeLists.txt +++ b/examples/qt/CMakeLists.txt @@ -1,2 +1 @@ add_subdirectory(01_translators) - diff --git a/src/myx/base/CMakeLists.txt b/src/myx/base/CMakeLists.txt index 2fa7acd..91744d5 100644 --- a/src/myx/base/CMakeLists.txt +++ b/src/myx/base/CMakeLists.txt @@ -1,50 +1,50 @@ # Название основной цели и имя библиотеки в текущем каталоге -set(current_target base) +set(TRGT base) -set(current_target_sources - ${CMAKE_CURRENT_SOURCE_DIR}/config.cpp -) +# cmake-format: off +# Список файлов исходных текстов +set(TRGT_sources + ${CMAKE_CURRENT_SOURCE_DIR}/config.cpp) -# Список заголовочных файлов (используется для установки) -set(current_target_headers - ${CMAKE_CURRENT_SOURCE_DIR}/config.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/limits.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/enum_bitmask_operations.hpp -) +# Список заголовочных файлов +set(TRGT_headers + ${CMAKE_CURRENT_SOURCE_DIR}/config.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/limits.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/enum_bitmask_operations.hpp) +# cmake-format: on -add_common_library(TARGET ${current_target} OUTPUT_NAME myx-${current_target} - SOURCES ${current_target_sources} ${current_target_headers}) -common_target_properties(${current_target}) -add_clang_tidy_check(${current_target} ${current_target_sources}) -add_clang_analyze_check(${current_target} ${current_target_sources}) -add_clazy_check(${current_target} ${current_target_sources}) -add_pvs_check(${current_target}) +add_common_library(TARGET ${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_sources} ${TRGT_headers}) +common_target_properties(${TRGT}) -# Форматирование исходников -add_format_sources(${current_target} ${current_target_sources} ${current_target_headers}) +# Создание цели для проверки утилитой clang-tidy +add_clang_tidy_check(${TRGT} ${TRGT_sources}) -target_include_directories(${current_target} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) +# Создание цели для проверки утилитой clang-analyze +add_clang_analyze_check(${TRGT} ${TRGT_sources}) + +# Создание цели для проверки утилитой clazy +add_clazy_check(${TRGT} ${TRGT_sources}) + +# Создание цели для проверки утилитой pvs-studio +add_pvs_check(${TRGT}) + +# Создание цели для автоматического форматирования кода +add_format_sources(${TRGT} ${TRGT_sources} ${TRGT_headers}) + +target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) # Цель, используемая только для установки заголовочных файлов без компиляции проекта -add_custom_target(${current_target}-install-headers - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=headers -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" - ) +add_custom_target(${TRGT}-install-headers COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=DEV -P + "${CMAKE_BINARY_DIR}/cmake_install.cmake") -set_target_properties(${current_target} - PROPERTIES - OUTPUT_NAME myx-base - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - ) +set_target_properties(${TRGT} PROPERTIES OUTPUT_NAME myx-base RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) # Правила для установки -install(TARGETS ${current_target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS ${TRGT}_static COMPONENT DEV ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(BUILD_SHARED_LIBS) - install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS ${TRGT}_shared COMPONENT DEV LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -install(FILES ${CMAKE_BINARY_DIR}/include/config_flags.hpp - ${current_target_headers} - COMPONENT headers - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${current_target}) -install(FILES ${CMAKE_BINARY_DIR}/${current_target}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - +install(FILES ${CMAKE_BINARY_DIR}/include/config_flags.hpp ${TRGT_headers} COMPONENT DEV + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT}) +install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc COMPONENT DEV DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) diff --git a/src/myx/filesystem/CMakeLists.txt b/src/myx/filesystem/CMakeLists.txt index b0bdab1..05d4585 100644 --- a/src/myx/filesystem/CMakeLists.txt +++ b/src/myx/filesystem/CMakeLists.txt @@ -1,56 +1,53 @@ # Название основной цели и имя библиотеки в текущем каталоге -set(current_target filesystem) +set(TRGT filesystem) +# cmake-format: off # Список файлов исходных текстов -set(current_target_sources - ${CMAKE_CURRENT_SOURCE_DIR}/current_executable.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/paths.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/paths_mt.cpp -) +set(TRGT_sources + ${CMAKE_CURRENT_SOURCE_DIR}/current_executable.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/paths.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/paths_mt.cpp) -# Список заголовочных файлов (используется для установки) -set(current_target_headers - ${CMAKE_CURRENT_SOURCE_DIR}/current_executable.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/paths.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/paths_mt.hpp -) +# Список заголовочных файлов +set(TRGT_headers + ${CMAKE_CURRENT_SOURCE_DIR}/current_executable.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/paths.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/paths_mt.hpp) +# cmake-format: on -add_common_library(TARGET ${current_target} - OUTPUT_NAME myx-${current_target} - SOURCES ${current_target_sources}) -common_target_properties(${current_target}) +add_common_library(TARGET ${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_sources}) +common_target_properties(${TRGT}) -add_clang_tidy_check(${current_target} ${current_target_sources}) -add_clang_analyze_check(${current_target} ${current_target_sources}) -add_clazy_check(${current_target} ${current_target_sources}) -add_pvs_check(${current_target}) +# Создание цели для проверки утилитой clang-tidy +add_clang_tidy_check(${TRGT} ${TRGT_sources}) -# Форматирование исходников -add_format_sources(${current_target} ${current_target_sources} ${current_target_headers}) +# Создание цели для проверки утилитой clang-analyze +add_clang_analyze_check(${TRGT} ${TRGT_sources}) -target_include_directories(${current_target} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) -target_include_directories(${current_target} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) -target_include_directories(${current_target} PRIVATE ${CMAKE_BINARY_DIR}/include) +# Создание цели для проверки утилитой clazy +add_clazy_check(${TRGT} ${TRGT_sources}) + +# Создание цели для проверки утилитой pvs-studio +add_pvs_check(${TRGT}) + +# Создание цели для автоматического форматирования кода +add_format_sources(${TRGT} ${TRGT_sources} ${TRGT_headers}) + +target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) +target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) +target_include_directories(${TRGT} PRIVATE ${CMAKE_BINARY_DIR}/include) # Цель, используемая только для установки заголовочных файлов без компиляции проекта -add_custom_target(${current_target}-install-headers - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=headers -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" - ) +add_custom_target(${TRGT}-install-headers COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=DEV -P + "${CMAKE_BINARY_DIR}/cmake_install.cmake") -set_target_properties(${current_target} - PROPERTIES - OUTPUT_NAME myx-filesystem - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - ) +set_target_properties(${TRGT} PROPERTIES OUTPUT_NAME myx-filesystem + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) # Правила для установки -install(TARGETS ${current_target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS ${TRGT}_static COMPONENT DEV ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(BUILD_SHARED_LIBS) - install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS ${TRGT}_shared COMPONENT DEV LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -install(FILES ${current_target_headers} - COMPONENT headers - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${current_target}) -install(FILES ${CMAKE_BINARY_DIR}/${current_target}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - +install(FILES ${TRGT_headers} COMPONENT DEV DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT}) +install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc COMPONENT DEV DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) diff --git a/src/myx/math/CMakeLists.txt b/src/myx/math/CMakeLists.txt index be73c58..0174187 100644 --- a/src/myx/math/CMakeLists.txt +++ b/src/myx/math/CMakeLists.txt @@ -1,63 +1,62 @@ # Название основной цели и имя библиотеки в текущем каталоге -set(current_target math) +set(TRGT math) +# cmake-format: off # Список файлов исходных текстов -set(current_target_sources - ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_relative.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_relative_and_abs.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_ulps.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_ulps_and_abs.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/constants.cpp -) +set(TRGT_sources + ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_relative.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_relative_and_abs.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_ulps.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_ulps_and_abs.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/constants.cpp) -# Список заголовочных файлов (используется для установки) -set(current_target_headers - ${CMAKE_CURRENT_SOURCE_DIR}/all.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_relative.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_relative_and_abs.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_ulps.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_ulps_and_abs.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/constants.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/float_cmp_types.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/functions.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/radar.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/units.hpp -) +# Список заголовочных файлов +set(TRGT_headers + ${CMAKE_CURRENT_SOURCE_DIR}/all.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_relative.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_relative_and_abs.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_ulps.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/almost_equal_ulps_and_abs.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/constants.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/float_cmp_types.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/functions.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/radar.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/units.hpp) +# cmake-format: on -add_common_library(TARGET ${current_target} - OUTPUT_NAME myx-${current_target} - SOURCES ${current_target_sources}) -common_target_properties(${current_target}) +add_common_library(TARGET ${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_sources}) +common_target_properties(${TRGT}) -add_clang_tidy_check(${current_target} ${current_target_sources}) -add_clang_analyze_check(${current_target} ${current_target_sources}) -add_clazy_check(${current_target} ${current_target_sources}) -add_pvs_check(${current_target}) +# Создание цели для проверки утилитой clang-tidy +add_clang_tidy_check(${TRGT} ${TRGT_sources}) -add_format_sources(${current_target} ${current_target_sources} ${current_target_headers}) +# Создание цели для проверки утилитой clang-analyze +add_clang_analyze_check(${TRGT} ${TRGT_sources}) -target_include_directories(${current_target} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) -target_include_directories(${current_target} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) -target_include_directories(${current_target} PRIVATE ${CMAKE_BINARY_DIR}/include) +# Создание цели для проверки утилитой clazy +add_clazy_check(${TRGT} ${TRGT_sources}) + +# Создание цели для проверки утилитой pvs-studio +add_pvs_check(${TRGT}) + +# Создание цели для автоматического форматирования кода +add_format_sources(${TRGT} ${TRGT_sources} ${TRGT_headers}) + +target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) +target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) +target_include_directories(${TRGT} PRIVATE ${CMAKE_BINARY_DIR}/include) # Цель, используемая только для установки заголовочных файлов без компиляции проекта -add_custom_target(${current_target}-install-headers - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=headers -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" - ) +add_custom_target(${TRGT}-install-headers COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=DEV -P + "${CMAKE_BINARY_DIR}/cmake_install.cmake") -set_target_properties(${current_target} - PROPERTIES - OUTPUT_NAME myx-math - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - ) +set_target_properties(${TRGT} PROPERTIES OUTPUT_NAME myx-math RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) # Правила для установки -install(TARGETS ${current_target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS ${TRGT}_static COMPONENT DEV ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(BUILD_SHARED_LIBS) - install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS ${TRGT}_shared COMPONENT DEV LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -install(FILES ${current_target_headers} - COMPONENT headers - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${current_target}) -install(FILES ${CMAKE_BINARY_DIR}/${current_target}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +install(FILES ${TRGT_headers} COMPONENT DEV DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT}) +install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc COMPONENT DEV DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) diff --git a/src/myx/qt/CMakeLists.txt b/src/myx/qt/CMakeLists.txt index cb460f1..5ce9b57 100644 --- a/src/myx/qt/CMakeLists.txt +++ b/src/myx/qt/CMakeLists.txt @@ -1,43 +1,46 @@ # Название основной цели и имя библиотеки в текущем каталоге -set(current_target qt) +set(TRGT qt) +# cmake-format: off # Список файлов исходных текстов -set(current_target_sources ${CMAKE_CURRENT_SOURCE_DIR}/translators.cpp) +set(TRGT_sources + ${CMAKE_CURRENT_SOURCE_DIR}/translators.cpp) # Список заголовочных файлов (используется для установки) -set(current_target_headers ${CMAKE_CURRENT_SOURCE_DIR}/backports.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/translators.hpp) +set(TRGT_headers + ${CMAKE_CURRENT_SOURCE_DIR}/backports.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/translators.hpp) +# cmake-format: on -add_common_library(TARGET ${current_target} - OUTPUT_NAME myx-${current_target} - SOURCES ${current_target_sources}) -common_target_properties(${current_target}) -add_clang_tidy_check(${current_target} ${current_target_sources}) -add_clang_analyze_check(${current_target} ${current_target_sources}) -add_clazy_check(${current_target} ${current_target_sources}) -add_pvs_check(${current_target}) +add_common_library(TARGET ${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_sources}) +common_target_properties(${TRGT}) -# Форматирование исходников -add_format_sources(${current_target} ${current_target_sources} ${current_target_headers}) +# Создание цели для проверки утилитой clang-tidy +add_clang_tidy_check(${TRGT} ${TRGT_sources}) -target_include_directories(${current_target} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) -target_include_directories(${current_target} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) +# Создание цели для проверки утилитой clang-analyze +add_clang_analyze_check(${TRGT} ${TRGT_sources}) -# Цель, используемая только для установки заголовочных файлов без компиляции -# проекта -add_custom_target(${current_target}-install-headers - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=headers - -P - "${CMAKE_BINARY_DIR}/cmake_install.cmake") +# Создание цели для проверки утилитой clazy +add_clazy_check(${TRGT} ${TRGT_sources}) + +# Создание цели для проверки утилитой pvs-studio +add_pvs_check(${TRGT}) + +# Создание цели для автоматического форматирования кода +add_format_sources(${TRGT} ${TRGT_sources} ${TRGT_headers}) + +target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) +target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) + +# Цель, используемая только для установки заголовочных файлов без компиляции проекта +add_custom_target(${TRGT}-install-headers COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=DEV -P + "${CMAKE_BINARY_DIR}/cmake_install.cmake") # Правила для установки -install(TARGETS ${current_target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS ${TRGT}_static COMPONENT DEV ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(BUILD_SHARED_LIBS) - install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS ${TRGT}_shared COMPONENT DEV LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -install(FILES ${current_target_headers} - COMPONENT headers - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${current_target}) -install(FILES ${CMAKE_BINARY_DIR}/${current_target}.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +install(FILES ${TRGT_headers} COMPONENT DEV DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT}) +install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc COMPONENT DEV DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) diff --git a/src/myx/redis/CMakeLists.txt b/src/myx/redis/CMakeLists.txt index a71b528..8f6f2cd 100644 --- a/src/myx/redis/CMakeLists.txt +++ b/src/myx/redis/CMakeLists.txt @@ -1,62 +1,57 @@ # Название основной цели и имя библиотеки в текущем каталоге -set(current_target redis) +set(TRGT redis) +# cmake-format: off # Список файлов исходных текстов -set(current_target_sources - ${CMAKE_CURRENT_SOURCE_DIR}/client.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/config.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/lexer.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/parser.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/request.cpp -) +set(TRGT_sources + ${CMAKE_CURRENT_SOURCE_DIR}/client.cpp ${CMAKE_CURRENT_SOURCE_DIR}/config.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/lexer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/parser.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/request.cpp) # Список заголовочных файлов (используется для установки) -set(current_target_headers - ${CMAKE_CURRENT_SOURCE_DIR}/client.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/config.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/lexer.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/parser.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/reply.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/request.hpp -) +set(TRGT_headers + ${CMAKE_CURRENT_SOURCE_DIR}/client.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/config.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/lexer.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/parser.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/reply.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/request.hpp) +# cmake-format: on -add_common_library(TARGET ${current_target} - OUTPUT_NAME myx-${current_target} - SOURCES ${current_target_sources}) -common_target_properties(${current_target}) +add_common_library(TARGET ${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_sources}) +common_target_properties(${TRGT}) -add_clang_tidy_check(${current_target} ${current_target_sources}) -add_clang_analyze_check(${current_target} ${current_target_sources}) -add_clazy_check(${current_target} ${current_target_sources}) -add_pvs_check(${current_target}) +# Создание цели для проверки утилитой clang-tidy +add_clang_tidy_check(${TRGT} ${TRGT_sources}) -# Форматирование исходников -add_format_sources(${current_target} ${current_target_sources} ${current_target_headers}) +# Создание цели для проверки утилитой clang-analyze +add_clang_analyze_check(${TRGT} ${TRGT_sources}) -target_include_directories(${current_target} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) -target_include_directories(${current_target} SYSTEM PUBLIC ${Qt5Network_INCLUDE_DIRS}) -target_include_directories(${current_target} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) -target_include_directories(${current_target} PRIVATE ${CMAKE_BINARY_DIR}/include) +# Создание цели для проверки утилитой clazy +add_clazy_check(${TRGT} ${TRGT_sources}) + +# Создание цели для проверки утилитой pvs-studio +add_pvs_check(${TRGT}) + +# Создание цели для автоматического форматирования кода +add_format_sources(${TRGT} ${TRGT_sources} ${TRGT_headers}) + +target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) +target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Network_INCLUDE_DIRS}) +target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) +target_include_directories(${TRGT} PRIVATE ${CMAKE_BINARY_DIR}/include) # Цель, используемая только для установки заголовочных файлов без компиляции проекта -add_custom_target(${current_target}-install-headers - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=headers -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" - ) +add_custom_target(${TRGT}-install-headers COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_COMPONENT=DEV -P + "${CMAKE_BINARY_DIR}/cmake_install.cmake") -set_target_properties(${current_target} - PROPERTIES - OUTPUT_NAME qxredis - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - ) +set_target_properties(${TRGT} PROPERTIES OUTPUT_NAME qxredis RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) # Правила для установки -install(TARGETS ${current_target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS ${TRGT}_static COMPONENT DEV ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(BUILD_SHARED_LIBS) - install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS ${TRGT}_shared COMPONENT DEV LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -install(FILES ${current_target_headers} - COMPONENT headers - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${current_target}) -install(FILES ${CMAKE_BINARY_DIR}/${current_target}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - +install(FILES ${TRGT_headers} COMPONENT DEV DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT}) +install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc COMPONENT DEV DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)