# C/C++ ## Признаки платформы - `CMakeLists.txt` - `Makefile`, `makefile` - `*.cpp`, `*.c`, `*.h`, `*.hpp` - `conanfile.txt`, `conanfile.py` (Conan) - `vcpkg.json` (vcpkg) ## Признаки многомодульного проекта - Несколько `CMakeLists.txt` с `add_subdirectory` - Несколько `Makefile` в подкаталогах - `lib/`, `src/`, `modules/` каталоги ## Источники перед созданием навыка - `CMakeLists.txt` (зависимости и цели сборки) - `conanfile.*` (зависимости) - `vcpkg.json` (зависимости) - `Makefile` (цели сборки) ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/`, `lib/`, `include/` ### Типовые слои и каталоги: зафиксируй найденные `core/`, `utils/`, `network/`, `storage/`, `ui/`, `tests/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Class | `class *`, `public:`, `private:` | cpp-class | | Header | `*.h`, `*.hpp`, `#pragma once` | header-file | | Template | `template<`, `typename T` | cpp-template | | Smart Pointer | `std::unique_ptr`, `std::shared_ptr` | smart-pointer | | RAII | шаблон деструктора, `~*()` | raii-pattern | | Singleton | `static *& instance()` | singleton | | Factory | `create*()`, `make*()` | factory-pattern | | Observer | `subscribe`, `notify`, шаблон обратного вызова | observer-pattern | | Thread | `std::thread`, `std::async`, `pthread` | threading | | Mutex | `std::mutex`, `std::lock_guard` | synchronization | | Network | `socket`, `asio::`, `boost::asio` | network-cpp | | Serialization | `nlohmann::json`, `protobuf` | serialization | | Unit Test | `TEST(`, `TEST_F(`, `gtest` | gtest | | Catch2 Test | `TEST_CASE(`, `REQUIRE(` | catch2-test | ## Обязательные разделы результата Добавь, если найдено: - **Основные модули**: основная функциональность - **Библиотеки**: внутренние библиотеки - **Заголовочные файлы**: публичный API - **Тесты**: организация проверок - **Build цели сборки**: executables, libraries ## Откуда брать команды - `CMakeLists.txt` пользовательские цели сборки - `Makefile` цели сборки - README, документация и CI - Обычные команды: `cmake`, `make`, `ctest` - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/`, `include/` - `lib/`, `libs/` - `tests/`, `test/` - `build/` (вне каталога исходников)