Рефакторинг 3

This commit is contained in:
Andrei Astafev 2020-04-22 18:54:40 +03:00
parent 4e2cff180c
commit b2731ac32f
14 changed files with 180 additions and 187 deletions

View File

@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.3)
cmake_policy(VERSION 3.0.2..3.7) cmake_policy(VERSION 3.0.2..3.7)
# Название проекта # Название проекта
project(myx VERSION 0.3.0 LANGUAGES C CXX) project(myx VERSION 0.4.0 LANGUAGES C CXX)
# В каталоге cmake/lib находятся файлы с библиотечными функциями # В каталоге cmake/lib находятся файлы с библиотечными функциями
if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmlib) if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmlib)
@ -14,7 +14,7 @@ endif()
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/find) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/find)
if(NOT DEFINED MYXLIB_MASTER_PROJECT) if(NOT DEFINED MYXLIB_MASTER_PROJECT)
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
set(MYXLIB_MASTER_PROJECT ON) set(MYXLIB_MASTER_PROJECT ON)
else() else()
set(MYXLIB_MASTER_PROJECT OFF) set(MYXLIB_MASTER_PROJECT OFF)
@ -23,8 +23,11 @@ endif()
include(CMLibCommon) include(CMLibCommon)
option(MYXLIB_HEADER_ONLY "Build header only version of library" ON) option(MYXLIB_BUILD_LIBRARIES "Build libraries" OFF)
option(MYXLIB_BUILD_EXAMPLES "Build examples" OFF) if(MYXLIB_BUILD_LIBRARIES)
option(MYXLIB_BUILD_EXAMPLES "Build examples" OFF)
endif()
option(MYXLIB_BUILD_EXAMPLES_HO "Build examples using header only version" OFF)
# Поиск библиотек с помощью pkgconfig # Поиск библиотек с помощью pkgconfig
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
@ -34,21 +37,7 @@ set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
# Qt5 # Qt5
find_package( find_package(Qt5 COMPONENTS Core Network REQUIRED)
Qt5
COMPONENTS
Core
Network
REQUIRED)
# Автоматически генерируемый заголовочный файл
# cmlib_config_hpp_generate()
# configure_file(${CMAKE_SOURCE_DIR}/src/myx/base/config_flags.hpp.in
# ${CMAKE_BINARY_DIR}/include/myx/base/config_flags.hpp)
# Подключение внешних проектов
include(ExternalProject)
# Библиотеки # Библиотеки
add_subdirectory(src/myx/base) add_subdirectory(src/myx/base)
@ -58,7 +47,7 @@ add_subdirectory(src/myx/math)
add_subdirectory(src/myx/redis) add_subdirectory(src/myx/redis)
# Примеры # Примеры
if(BUILD_EXAMPLES) if(MYXLIB_BUILD_EXAMPLES OR MYXLIB_BUILD_EXAMPLES_HO)
add_subdirectory(examples/filesystem) add_subdirectory(examples/filesystem)
add_subdirectory(examples/qt) add_subdirectory(examples/qt)

@ -1 +1 @@
Subproject commit e5fbb9023546a5e98c832e8596586c71edcc5b2f Subproject commit 83a9e94e31ab410c3346a36ddd2d10aa91375617

View File

@ -31,12 +31,12 @@ target_include_directories(${TRGT} PRIVATE ${CMAKE_SOURCE_DIR}/src)
target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS})
if(NOT MYXLIB_HEADER_ONLY) if(NOT MYXLIB_HEADER_ONLY)
add_dependencies(${TRGT} base_static filesystem_static) add_dependencies(${TRGT} base_static filesystem_static)
target_link_libraries(${TRGT} myx-filesystem) target_link_libraries(${TRGT} myx-filesystem)
else() else()
target_compile_definitions(${TRGT} PUBLIC MYXLIB_HEADER_ONLY) target_compile_definitions(${TRGT} PUBLIC MYXLIB_HEADER_ONLY)
target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
add_dependencies(${TRGT} base filesystem) add_dependencies(${TRGT} base filesystem)
endif() endif()
target_link_libraries(${TRGT} Qt5::Core) target_link_libraries(${TRGT} Qt5::Core)

View File

@ -38,12 +38,12 @@ target_include_directories(${TRGT} PRIVATE ${CMAKE_SOURCE_DIR}/src)
target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS})
if(NOT MYXLIB_HEADER_ONLY) if(NOT MYXLIB_HEADER_ONLY)
add_dependencies(${TRGT} base_static qt_static) add_dependencies(${TRGT} base_static qt_static)
target_link_libraries(${TRGT} myx-qt) target_link_libraries(${TRGT} myx-qt)
else() else()
target_compile_definitions(${TRGT} PUBLIC MYXLIB_HEADER_ONLY) target_compile_definitions(${TRGT} PUBLIC MYXLIB_HEADER_ONLY)
target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
add_dependencies(${TRGT} base qt) add_dependencies(${TRGT} base qt)
endif() endif()
target_link_libraries(${TRGT} Qt5::Core) target_link_libraries(${TRGT} Qt5::Core)

View File

@ -16,63 +16,45 @@ set(TRGT_hpp
set(TRGT_headers ${TRGT_hpp}) set(TRGT_headers ${TRGT_hpp})
# cmake-format: on # cmake-format: on
if(MYXLIB_HEADER_ONLY) add_library(${TRGT}-header-only INTERFACE)
add_library(${TRGT} INTERFACE) target_include_directories(
else() ${TRGT}-header-only SYSTEM INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
add_common_library( "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
${TRGT}
OUTPUT_NAME myx-${TRGT}
SOURCES ${TRGT_cpp} ${TRGT_headers})
common_target_properties(${TRGT})
endif()
# Создание цели для проверки утилитой clang-tidy if(MYXLIB_BUILD_LIBRARIES)
add_clang_tidy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_common_library(${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_cpp} ${TRGT_headers})
common_target_properties(${TRGT})
# Создание цели для проверки утилитой clang-analyze # Создание цели для проверки утилитой clang-tidy
add_clang_analyze_check(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_clang_tidy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой clazy # Создание цели для проверки утилитой clang-analyze
add_clazy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_clang_analyze_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой pvs-studio # Создание цели для проверки утилитой clazy
add_pvs_check(${TRGT}) add_clazy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для автоматического форматирования кода # Создание цели для проверки утилитой pvs-studio
add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_pvs_check(${TRGT})
if(MYXLIB_HEADER_ONLY) # Создание цели для автоматического форматирования кода
target_include_directories(${TRGT} SYSTEM INTERFACE add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers})
"$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>") target_compile_definitions(${TRGT} PUBLIC MYXLIB_BUILD_LIBRARIES)
else() target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
cotire(${TRGT}) cotire(${TRGT})
install( install(TARGETS ${TRGT}_static COMPONENT libs-dev ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
TARGETS ${TRGT}_static
COMPONENT libs-dev
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(BUILD_SHARED_LIBS) if(BUILD_SHARED_LIBS)
install( install(TARGETS ${TRGT}_shared COMPONENT main LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
TARGETS ${TRGT}_shared
COMPONENT main
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif() endif()
endif() endif()
install( install(FILES ${TRGT_headers} ${CMAKE_BINARY_DIR}/include/myx/base/compiler_features.hpp COMPONENT headers
FILES ${TRGT_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT})
${CMAKE_BINARY_DIR}/include/myx/base/compiler_features.hpp
COMPONENT headers
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT})
install( install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc COMPONENT headers DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc
COMPONENT headers
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
# Цель, используемая только для установки заголовочных файлов без компиляции проекта # Цель, используемая только для установки заголовочных файлов без компиляции проекта
add_custom_target( add_custom_target(${TRGT}-install-headers COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=headers -P
${TRGT}-install-headers COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=headers -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
"${CMAKE_BINARY_DIR}/cmake_install.cmake")

View File

@ -3,7 +3,11 @@
#pragma once #pragma once
// #include <myx/base/config_flags.hpp> #ifdef MYXLIB_BUILD_LIBRARIES
#undef MYXLIB_HEADER_ONLY
#else
#define MYXLIB_HEADER_ONLY
#endif
#ifdef MYXLIB_HEADER_ONLY #ifdef MYXLIB_HEADER_ONLY
#include "config-inl.hpp" #include "config-inl.hpp"

View File

@ -22,41 +22,40 @@ set(TRGT_hpp
set(TRGT_headers ${TRGT_hpp}) set(TRGT_headers ${TRGT_hpp})
# cmake-format: on # cmake-format: on
if(NOT MYXLIB_HEADER_ONLY) add_library(${TRGT}-header-only INTERFACE)
add_common_library(${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_cpp} ${TRGT_headers}) target_include_directories(
common_target_properties(${TRGT}) ${TRGT}-header-only SYSTEM INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
else() "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
add_library(${TRGT} INTERFACE)
endif()
# Создание цели для проверки утилитой clang-tidy if(MYXLIB_BUILD_LIBRARIES)
add_clang_tidy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой clang-analyze add_common_library(${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_cpp} ${TRGT_headers})
add_clang_analyze_check(${TRGT} ${TRGT_cpp} ${TRGT_headers}) common_target_properties(${TRGT})
# Создание цели для проверки утилитой clazy # Создание цели для проверки утилитой clang-tidy
add_clazy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_clang_tidy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой pvs-studio # Создание цели для проверки утилитой clang-analyze
add_pvs_check(${TRGT}) add_clang_analyze_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для автоматического форматирования кода # Создание цели для проверки утилитой clazy
add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_clazy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
if(NOT MYXLIB_HEADER_ONLY) # Создание цели для проверки утилитой pvs-studio
target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) add_pvs_check(${TRGT})
target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
cotire(${TRGT})
install(TARGETS ${TRGT}_static COMPONENT libs-dev ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) # Создание цели для автоматического форматирования кода
if(BUILD_SHARED_LIBS) add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers})
install(TARGETS ${TRGT}_shared COMPONENT main LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif() target_compile_definitions(${TRGT} PUBLIC MYXLIB_BUILD_LIBRARIES)
else() target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS})
target_include_directories(${TRGT} SYSTEM INTERFACE target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
"$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>" cotire(${TRGT})
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
install(TARGETS ${TRGT}_static COMPONENT libs-dev ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(BUILD_SHARED_LIBS)
install(TARGETS ${TRGT}_shared COMPONENT main LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif() endif()
install(FILES ${TRGT_headers} COMPONENT DEV DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT}) install(FILES ${TRGT_headers} COMPONENT DEV DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT})

View File

@ -8,6 +8,8 @@
#pragma once #pragma once
#include <myx/base/config.hpp>
#include <QDir> #include <QDir>
#include <QFileInfo> #include <QFileInfo>
#include <QString> #include <QString>

View File

@ -8,6 +8,7 @@
#pragma once #pragma once
#include <myx/base/config.hpp>
#include <myx/filesystem/current_executable.hpp> #include <myx/filesystem/current_executable.hpp>
#include <QDir> #include <QDir>

View File

@ -8,6 +8,7 @@
#pragma once #pragma once
#include <myx/base/config.hpp>
#include <myx/filesystem/current_executable.hpp> #include <myx/filesystem/current_executable.hpp>
#include <myx/filesystem/paths.hpp> #include <myx/filesystem/paths.hpp>

View File

@ -26,36 +26,44 @@ set(TRGT_hpp
set(TRGT_headers ${TRGT_hpp}) set(TRGT_headers ${TRGT_hpp})
# cmake-format: on # cmake-format: on
add_common_library(${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_sources} ${TRGT_headers}) add_library(${TRGT}-header-only INTERFACE)
common_target_properties(${TRGT}) target_include_directories(
${TRGT}-header-only SYSTEM INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
# Создание цели для проверки утилитой clang-tidy if(MYXLIB_BUILD_LIBRARIES)
add_clang_tidy_check(${TRGT} ${TRGT_sources} ${TRGT_headers})
# Создание цели для проверки утилитой clang-analyze add_common_library(${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_sources} ${TRGT_headers})
add_clang_analyze_check(${TRGT} ${TRGT_sources} ${TRGT_headers}) common_target_properties(${TRGT})
# Создание цели для проверки утилитой clazy # Создание цели для проверки утилитой clang-tidy
add_clazy_check(${TRGT} ${TRGT_sources} ${TRGT_headers}) add_clang_tidy_check(${TRGT} ${TRGT_sources} ${TRGT_headers})
# Создание цели для проверки утилитой pvs-studio # Создание цели для проверки утилитой clang-analyze
add_pvs_check(${TRGT}) add_clang_analyze_check(${TRGT} ${TRGT_sources} ${TRGT_headers})
# Создание цели для автоматического форматирования кода # Создание цели для проверки утилитой clazy
add_format_sources(${TRGT} ${TRGT_sources} ${TRGT_headers}) add_clazy_check(${TRGT} ${TRGT_sources} ${TRGT_headers})
target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src) # Создание цели для проверки утилитой pvs-studio
add_pvs_check(${TRGT})
cotire(${TRGT}) # Создание цели для автоматического форматирования кода
add_format_sources(${TRGT} ${TRGT_sources} ${TRGT_headers})
target_compile_definitions(${TRGT} PUBLIC MYXLIB_BUILD_LIBRARIES)
target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
cotire(${TRGT})
install(TARGETS ${TRGT}_static COMPONENT DEV ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(BUILD_SHARED_LIBS)
install(TARGETS ${TRGT}_shared COMPONENT DEV LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif()
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)
# Цель, используемая только для установки заголовочных файлов без компиляции проекта # Цель, используемая только для установки заголовочных файлов без компиляции проекта
add_custom_target(${TRGT}-install-headers COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=DEV -P add_custom_target(${TRGT}-install-headers COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=DEV -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
# Правила для установки
install(TARGETS ${TRGT}_static COMPONENT DEV ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(BUILD_SHARED_LIBS)
install(TARGETS ${TRGT}_shared COMPONENT DEV LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
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)

View File

@ -17,44 +17,43 @@ set(TRGT_hpp
set(TRGT_headers ${TRGT_hpp}) set(TRGT_headers ${TRGT_hpp})
# cmake-format: on # cmake-format: on
if(NOT MYXLIB_HEADER_ONLY) add_library(${TRGT}-header-only INTERFACE)
add_common_library(${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_cpp} ${TRGT_headers}) target_include_directories(
common_target_properties(${TRGT}) ${TRGT}-header-only SYSTEM INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
else() "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
add_library(${TRGT} INTERFACE)
if(MYXLIB_BUILD_LIBRARIES)
add_common_library(${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_cpp} ${TRGT_headers})
common_target_properties(${TRGT})
# Создание цели для проверки утилитой clang-tidy
add_clang_tidy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой clang-analyze
add_clang_analyze_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой clazy
add_clazy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой pvs-studio
add_pvs_check(${TRGT})
# Создание цели для автоматического форматирования кода
add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers})
target_compile_definitions(${TRGT} PUBLIC MYXLIB_BUILD_LIBRARIES)
target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS})
target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
cotire(${TRGT})
install(TARGETS ${TRGT}_static COMPONENT libs-dev ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(BUILD_SHARED_LIBS)
install(TARGETS ${TRGT}_shared COMPONENT main LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif() endif()
# Создание цели для проверки утилитой clang-tidy install(FILES ${TRGT_headers} COMPONENT headers
add_clang_tidy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers}) DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT})
# Создание цели для проверки утилитой clang-analyze
add_clang_analyze_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой clazy
add_clazy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой pvs-studio
add_pvs_check(${TRGT})
# Создание цели для автоматического форматирования кода
add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers})
if(NOT MYXLIB_HEADER_ONLY)
target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS})
target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
cotire(${TRGT})
install(TARGETS ${TRGT}_static COMPONENT libs-dev ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(BUILD_SHARED_LIBS)
install(TARGETS ${TRGT}_shared COMPONENT main LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
else()
target_include_directories(${TRGT} SYSTEM INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
endif()
install(FILES ${TRGT_headers} COMPONENT headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${TRGT})
install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc COMPONENT headers DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc COMPONENT headers DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
# Цель, используемая только для установки заголовочных файлов без компиляции проекта # Цель, используемая только для установки заголовочных файлов без компиляции проекта

View File

@ -1,6 +1,7 @@
#ifndef MYX_LOG_QT_TRANSLATORS_HPP_ #ifndef MYX_LOG_QT_TRANSLATORS_HPP_
#define MYX_LOG_QT_TRANSLATORS_HPP_ #define MYX_LOG_QT_TRANSLATORS_HPP_
#include <myx/base/config.hpp>
#include <myx/qt/backports.hpp> #include <myx/qt/backports.hpp>
#include <QTranslator> #include <QTranslator>

View File

@ -22,38 +22,45 @@ set(TRGT_moc_hpp
set(TRGT_headers ${TRGT_hpp}) set(TRGT_headers ${TRGT_hpp})
# cmake-format: on # cmake-format: on
add_common_library(${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_cpp} ${TRGT_headers}) add_library(${TRGT}-header-only INTERFACE)
common_target_properties(${TRGT}) target_include_directories(
${TRGT}-header-only SYSTEM INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
# Создание цели для проверки утилитой clang-tidy if(MYXLIB_BUILD_LIBRARIES)
add_clang_tidy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_common_library(${TRGT} OUTPUT_NAME myx-${TRGT} SOURCES ${TRGT_cpp} ${TRGT_headers})
common_target_properties(${TRGT})
# Создание цели для проверки утилитой clang-analyze # Создание цели для проверки утилитой clang-tidy
add_clang_analyze_check(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_clang_tidy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой clazy # Создание цели для проверки утилитой clang-analyze
add_clazy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_clang_analyze_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для проверки утилитой pvs-studio # Создание цели для проверки утилитой clazy
add_pvs_check(${TRGT}) add_clazy_check(${TRGT} ${TRGT_cpp} ${TRGT_headers})
# Создание цели для автоматического форматирования кода # Создание цели для проверки утилитой pvs-studio
add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers}) add_pvs_check(${TRGT})
target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) # Создание цели для автоматического форматирования кода
target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Network_INCLUDE_DIRS}) add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers})
target_include_directories(${TRGT} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src)
cotire(${TRGT}) target_compile_definitions(${TRGT} PUBLIC MYXLIB_BUILD_LIBRARIES)
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)
cotire(${TRGT})
install(TARGETS ${TRGT}_static COMPONENT DEV ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(BUILD_SHARED_LIBS)
install(TARGETS ${TRGT}_shared COMPONENT DEV LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif()
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)
# Цель, используемая только для установки заголовочных файлов без компиляции проекта # Цель, используемая только для установки заголовочных файлов без компиляции проекта
add_custom_target(${TRGT}-install-headers COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_COMPONENT=DEV -P add_custom_target(${TRGT}-install-headers COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_COMPONENT=DEV -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
# Правила для установки
install(TARGETS ${TRGT}_static COMPONENT DEV ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(BUILD_SHARED_LIBS)
install(TARGETS ${TRGT}_shared COMPONENT DEV LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
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)