From 4deb7d3efb9d5d6fde1ac5027c29f9c92d384a5d Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Wed, 2 Oct 2019 14:29:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=81=D0=BD=D0=BE=D0=B2=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0=20=D1=80=D0=B0=D0=B7=D1=80?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D0=B0=D0=B5=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + CMakeLists.txt | 7 +++++-- cmake/etc/uncrustify | 2 +- src/base/CMakeLists.txt | 38 +++++++++++++++++++++++++++++++++++ src/base/config.cpp | 1 + src/base/config.hpp | 25 +++++++++++++++++++++++ src/base/config_flags.hpp.in | 7 +++++++ src/filesystem/CMakeLists.txt | 37 ++++++++++++++++++++++++++++++++++ src/filesystem/paths.cpp | 9 +++++++++ src/filesystem/paths.hpp | 16 +++++++++++++++ 10 files changed, 140 insertions(+), 3 deletions(-) create mode 100644 src/base/CMakeLists.txt create mode 100644 src/base/config.cpp create mode 100644 src/base/config.hpp create mode 100644 src/base/config_flags.hpp.in create mode 100644 src/filesystem/paths.cpp create mode 100644 src/filesystem/paths.hpp diff --git a/.gitignore b/.gitignore index f1d641f..fe94585 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ CMakeLists.txt.user* _build +_output *.autosave diff --git a/CMakeLists.txt b/CMakeLists.txt index aaf7697..b610d23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,15 +25,19 @@ include(CMLibCommon) find_package(PkgConfig) # Qt5 -find_package(Qt5 COMPONENTS Core Network Gui Widgets DBus Concurrent Sql) +find_package(Qt5 COMPONENTS Core Network Gui Widgets DBus Concurrent Sql REQUIRED) # Автоматически генерируемый заголовочный файл cmlib_config_hpp_generate() +configure_file(${CMAKE_SOURCE_DIR}/src/base/config_flags.hpp.in + ${CMAKE_BINARY_DIR}/include/config_flags.hpp) + # Подключение внешних проектов include(ExternalProject) # Библиотеки +add_subdirectory(src/base) add_subdirectory(src/filesystem) # Примеры @@ -49,4 +53,3 @@ add_breathe_target( CONF_FILE ${CMAKE_SOURCE_DIR}/doc/html/conf.py.in COMMENT "Documentation in HTML format with Breathe generator" ) - diff --git a/cmake/etc/uncrustify b/cmake/etc/uncrustify index 3c3c71e..a81f6a4 160000 --- a/cmake/etc/uncrustify +++ b/cmake/etc/uncrustify @@ -1 +1 @@ -Subproject commit 3c3c71e69c09b0551de64c717b7e1a0074527a25 +Subproject commit a81f6a48e03c767e3cc768813bf970e2188899d1 diff --git a/src/base/CMakeLists.txt b/src/base/CMakeLists.txt new file mode 100644 index 0000000..17c0e61 --- /dev/null +++ b/src/base/CMakeLists.txt @@ -0,0 +1,38 @@ +# Название основной цели и имя библиотеки в текущем каталоге +set(current_target base) + +set(current_target_sources + ${CMAKE_CURRENT_SOURCE_DIR}/config.cpp +) + +# Список заголовочных файлов (используется для установки) +set(current_target_headers + ${CMAKE_CURRENT_SOURCE_DIR}/config.hpp +) + +add_common_library(TARGET ${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_uncrustify_format(${current_target} ${current_target_sources} ${current_target_headers}) + +# Цель, используемая только для установки заголовочных файлов без компиляции проекта +add_custom_target(${current_target}-install-headers + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=headers -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + ) + +# Правила для установки +install(TARGETS ${current_target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(BUILD_SHARED_LIBS) + install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() +install(FILES ${CMAKE_BINARY_DIR}/include/cmlib_config.hpp + ${CMAKE_BINARY_DIR}/include/config_flags.hpp + ${current_target_headers} + COMPONENT headers + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${current_target}) +install(FILES ${CMAKE_BINARY_DIR}/${current_target}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + diff --git a/src/base/config.cpp b/src/base/config.cpp new file mode 100644 index 0000000..6a7852b --- /dev/null +++ b/src/base/config.cpp @@ -0,0 +1 @@ +#include "config.hpp" diff --git a/src/base/config.hpp b/src/base/config.hpp new file mode 100644 index 0000000..ffe9343 --- /dev/null +++ b/src/base/config.hpp @@ -0,0 +1,25 @@ +#ifndef MYX_BASE_CONFIG_HPP_ +#define MYX_BASE_CONFIG_HPP_ + +#include "cmlib_config.hpp" +#include "config_flags.hpp" + +#if ( defined ( TARGET_LSB_ID_AstraLinuxSE ) && defined ( TARGET_LSB_CODENAME_smolensk ) ) + +#define override + +#if QT_VERSION <= 0x050700 +#include +template< typename ... Args > +struct QOverload +{ + template< typename C, typename R > + static constexpr auto of( R ( C::* pmf )( Args... ) )->decltype( pmf ) + { + return( pmf ); + } +}; +#endif +#endif + +#endif // MYX_BASE_CONFIG_HPP_ diff --git a/src/base/config_flags.hpp.in b/src/base/config_flags.hpp.in new file mode 100644 index 0000000..8f19958 --- /dev/null +++ b/src/base/config_flags.hpp.in @@ -0,0 +1,7 @@ +#ifndef @CMLIB_PROJECT_NAME_CANONICAL@_CONFIG_FLAGS_HPP_ +#define @CMLIB_PROJECT_NAME_CANONICAL@_CONFIG_FLAGS_HPP_ + +// #cmakedefine + +#endif /* @CMLIB_PROJECT_NAME_CANONICAL@_CONFIG_FLAGS_HPP_ */ + diff --git a/src/filesystem/CMakeLists.txt b/src/filesystem/CMakeLists.txt index e69de29..60a164f 100644 --- a/src/filesystem/CMakeLists.txt +++ b/src/filesystem/CMakeLists.txt @@ -0,0 +1,37 @@ +# Название основной цели и имя библиотеки в текущем каталоге +set(current_target filesystem) + +# Список файлов исходных текстов +set(current_target_sources + ${CMAKE_CURRENT_SOURCE_DIR}/paths.cpp +) + +# Список заголовочных файлов (используется для установки) +set(current_target_headers + ${CMAKE_CURRENT_SOURCE_DIR}/paths.hpp +) + +add_common_library(TARGET ${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_uncrustify_format(${current_target} ${current_target_sources} ${current_target_headers}) + +# Цель, используемая только для установки заголовочных файлов без компиляции проекта +add_custom_target(${current_target}-install-headers + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=headers -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + ) + +# Правила для установки +install(TARGETS ${current_target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(BUILD_SHARED_LIBS) + install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() +install(FILES ${current_target_headers} + COMPONENT headers + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${current_target}) +install(FILES ${CMAKE_BINARY_DIR}/${current_target}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + diff --git a/src/filesystem/paths.cpp b/src/filesystem/paths.cpp new file mode 100644 index 0000000..f42acfd --- /dev/null +++ b/src/filesystem/paths.cpp @@ -0,0 +1,9 @@ +#include "paths.hpp" + +namespace MF = myx::filesystem; + + +int32_t MF::init( int32_t i = 0 ) +{ + return( i ); +} diff --git a/src/filesystem/paths.hpp b/src/filesystem/paths.hpp new file mode 100644 index 0000000..fdf35f9 --- /dev/null +++ b/src/filesystem/paths.hpp @@ -0,0 +1,16 @@ +#ifndef MYX_FILESYSTEM_PATHS_HPP_ +#define MYX_FILESYSTEM_PATHS_HPP_ + +#include + +namespace myx { + +namespace filesystem { + +int32_t init( int32_t i ); + +} // namespace filesystem + +} // namespace myx + +#endif // MYX_FILESYSTEM_PATHS_HPP_