From ccd8c6178890ec6dc07202e770d5ef654706779b Mon Sep 17 00:00:00 2001 From: Krishna Ayyalasomayajula Date: Tue, 24 Feb 2026 17:21:04 -0600 Subject: [PATCH] gitignore update --- .gitignore | 1 + .opencode/AGENTS.md | 90 ----------------------------------------- .opencode/cmake-plan.md | 68 ------------------------------- 3 files changed, 1 insertion(+), 158 deletions(-) delete mode 100644 .opencode/AGENTS.md delete mode 100644 .opencode/cmake-plan.md diff --git a/.gitignore b/.gitignore index 1c29c49..23d810c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ Thumbs.db *.swp *.swo .claude/** +.opencode/** # Build system metadata (keep actual build dirs tracked) CMakeFiles/** CMakeCache.txt diff --git a/.opencode/AGENTS.md b/.opencode/AGENTS.md deleted file mode 100644 index 3d9c213..0000000 --- a/.opencode/AGENTS.md +++ /dev/null @@ -1,90 +0,0 @@ -# Project Agent Guidelines - -## Build, Lint, and Test Commands - -### Build Commands -```bash -# Create build directory and configure -mkdir -p build && cd build && cmake .. - -# Build all targets -make - -# Build specific target -make - -# Build with specific configuration -make Release -``` - -### Lint Commands -```bash -# C++ linting with clang-tidy (if available) -clang-tidy src/*.cpp -- -std=c++23 -I include/ - -# C++ formatting with clang-format -clang-format -i src/*.cpp include/*.h -``` - -### Test Commands -```bash -# Run all tests (if any exist) -make test - -# Run a single test (if using a testing framework like Google Test) -./build/ - -# For CMake-based projects with tests -ctest -R -``` - -## Code Style Guidelines - -### General -- Use C++23 standard features -- Follow Google C++ Style Guide principles -- Keep functions small and focused -- Use meaningful, descriptive names -- Write clear, self-documenting code -- Add comments for complex logic - -### Naming Conventions -- Classes: PascalCase (e.g., `MyClass`) -- Functions: camelCase (e.g., `calculateSum`) -- Variables: camelCase (e.g., `myVariable`) -- Constants: UPPER_SNAKE_CASE (e.g., `MAX_SIZE`) -- Files: snake_case (e.g., `my_file.cpp`) - -### Imports and Includes -- Use angle brackets for system headers: `#include ` -- Use quotes for local headers: `#include "my_header.h"` -- Order includes: system headers, then local headers -- Avoid `using namespace` in headers -- Use forward declarations when possible - -### Formatting -- Use 2-space indentation (no tabs) -- No trailing whitespace -- Single space around operators -- Function parameters on same line if short, otherwise one parameter per line -- Braces on same line for functions, new line for control structures - -### Types -- Use `auto` when type is obvious from initialization -- Prefer `const` and `constexpr` for immutable values -- Use smart pointers (`std::unique_ptr`, `std::shared_ptr`) instead of raw pointers -- Use `std::optional` for optional values -- Use `std::string_view` for string views - -### Error Handling -- Use exceptions for error conditions -- Prefer RAII for resource management -- Use `std::optional` or `std::expected` for operations that can fail -- Don't ignore return values of functions that can fail - -### Code Structure -- Keep lines under 100 characters -- Separate logical sections with blank lines -- Group related functions together -- Use namespaces to avoid naming conflicts -- Break large functions into smaller, reusable components \ No newline at end of file diff --git a/.opencode/cmake-plan.md b/.opencode/cmake-plan.md deleted file mode 100644 index 695d9d2..0000000 --- a/.opencode/cmake-plan.md +++ /dev/null @@ -1,68 +0,0 @@ -# CMake 2026 Project Setup Plan - -## Overview -This document outlines the technical plan for setting up a CMake-based C++ project with the following requirements: -- clang++ compiler with C++23 defaults -- Automatic source file discovery in src/ directory -- Executable generation from files containing 'main' in filename -- External dependency handling for git submodules -- Organized compile flags and variables - -## Key Components - -### 1. Compiler Configuration -- Use clang++ as the C++ compiler -- Set C++ standard to C++23 -- Configure appropriate compiler flags for clang - -### 2. Source File Discovery -- Scan src/ directory for all .cpp files -- Use regex pattern `.*main.*\.cpp$` to identify main files -- Separate main files from other source files - -### 3. Executable Generation -- Automatically create executables from files with 'main' in filename -- Create a library from all non-main source files -- Link the library to each executable - -### 4. External Dependency Management -- Handle dependencies in external/ directory -- Example: spdlog in external/spdlog with namespace spdlog -- Create interface libraries for external dependencies - -### 5. Compile Flags Organization -- Debug build flags: -g -O0 -Wall -Wextra -- Release build flags: -O3 -DNDEBUG -Wall -Wextra -- Common flags: -std=c++23 -fPIC - -## Implementation Details - -### Regex Pattern -``` -.*main.*\.cpp$ -``` -Used to detect files containing 'main' in their filename. - -### Directory Structure -- `src/` - Source files directory -- `external/` - Git submodules directory -- `include/` - Header files directory - -### File Processing Logic -1. Find all .cpp files in src/ -2. Separate main files from other source files -3. Create library from non-main files -4. Generate executables from main files -5. Link library and external dependencies to each executable - -## CMake Commands Used -- `cmake_minimum_required(VERSION 3.15)` -- `project(ProjectEuler CXX)` -- `file(GLOB_RECURSE)` -- `list(APPEND)` -- `add_executable()` -- `add_library()` -- `target_link_libraries()` -- `target_compile_features()` -- `find_package()` -- `add_subdirectory()` \ No newline at end of file