Skip to content

Commit 6a59531

Browse files
committed
fix readme and ci/cd containers
1 parent 06fefc0 commit 6a59531

File tree

5 files changed

+49
-27
lines changed

5 files changed

+49
-27
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ find_package(package CONFIG REQUIRED)
2929

3030
# Tooling (optional but guarded)
3131
option(ENABLE_DEV_TOOLS "Enable dev tools like clang-format, clang-tidy, etc."
32-
ON)
32+
OFF)
3333

3434
if(ENABLE_DEV_TOOLS)
3535
find_package(clang_format CONFIG QUIET)

docker/fedora.Dockerfile

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ FROM fedora:latest
33
WORKDIR /app
44

55
# Install essential C++ development tools, documentation, and workflow tools
6-
RUN dnf -y upgrade && \
6+
RUN dnf -y upgrade --refresh && \
77
dnf -y install \
88
clang \
99
clang-tools-extra \
@@ -13,14 +13,15 @@ RUN dnf -y upgrade && \
1313
ninja-build \
1414
make \
1515
gcc-c++ \
16-
cups-devel && \
17-
dnf clean all
16+
&& dnf clean all
1817

1918
COPY . /app
2019

21-
# Optionally, set an entrypoint for workflow automation
22-
# Example: Run a specific CMake workflow preset
20+
# Validate CMake preset early (fail fast if misconfigured)
21+
RUN cmake --preset=gcc-full --check-presets
22+
23+
# Default entrypoint: run the full build/test workflow
2324
ENTRYPOINT ["cmake", "--workflow", "--preset=gcc-full"]
2425

25-
# Or, keep an interactive shell for development
26+
# Fallback: interactive shell if needed (e.g., docker run -it --entrypoint /bin/bash ...)
2627
# CMD ["/bin/bash"]

docker/manjaro.Dockerfile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,22 @@ WORKDIR /app
66

77
# Install essential C++ development tools, documentation, and workflow tools
88
RUN pacman -Syu --noconfirm && \
9-
pacman -S --noconfirm \
9+
pacman -S --needed --noconfirm \
1010
base-devel \
1111
clang \
1212
clang-doc \
1313
doxygen \
1414
cmake \
1515
git \
16-
ninja
16+
ninja \
17+
&& pacman -Scc --noconfirm
1718

1819
# Copy the source code into the container
1920
COPY . /app
2021

21-
# Optionally, set an entrypoint for workflow automation
22+
# Validate CMake preset early to fail fast on configuration errors
23+
RUN cmake --preset=gcc-full --check-presets
24+
2225
# Example: Run a specific CMake workflow preset
2326
ENTRYPOINT ["cmake", "--workflow", "--preset=gcc-full"]
2427

readme.md

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
- **🛡️ Code Quality Tools**: Integrated targets for maintaining high standards
2323
- **📦 CPM Package Management**: Simplified dependency handling
2424
- **📄 Doxygen Configuration**: Seamless documentation generation
25-
- **🧪 CTest Integration**: Straightforward testing setup
25+
- **🧪 CTest Integration**: Straightforward testing setup (doctest + androidTest)
2626
- **🐳 Docker Support**: Pre-configured containerization
2727
- **💻 IDE Compatibility**: Works with QtCreator, CLion, Visual Studio, KDevelop
28-
- **🌐 Cross-Platform**: Linux, Windows, macOS support
28+
- **🌐 Cross-Platform**: Linux, Windows, Android, macOS support
2929
- **🏗️ CMake-Driven**: Streamlined CI/CD configuration
3030

3131
## Advanced Feature Matrix
@@ -34,26 +34,22 @@ Contemporary C++ development requires sophisticated tooling integration that add
3434

3535
### Core Development Features
3636

37-
| Component | Technology | Configuration | Performance Impact |
38-
| --------------------- | -------------------------------- | ---------------------------- | -------------------------- |
39-
| **Build System** | CMake 3.28+ | Multi-preset configuration | Zero runtime overhead |
40-
| **Compiler Support** | GCC 13+, Clang 16+, MSVC 19.35+ | Standards-compliant C++23/26 | Optimal code generation |
41-
| **Memory Management** | Custom allocators, RAII patterns | Stack-preferring design | Sub-microsecond allocation |
42-
| **Concurrency** | std::execution, coroutines | Lock-free data structures | Minimal contention |
43-
| **Error Handling** | std::expected, error codes | Zero-cost exception safety | Predictable performance |
37+
| Component | Technology | Configuration |
38+
| --------------------- | -------------------------------- | ---------------------------- |
39+
| **Build System** | CMake 3.30+ | Multi-preset configuration |
40+
| **Compiler Support** | GCC 13+, Clang 16+, MSVC 19.35+ | Standards-compliant C++23/26 |
4441

4542
### Quality Assurance Pipeline
4643

47-
| Tool Category | Implementation | Integration | Quality Metrics |
48-
| ------------------------- | --------------------------------- | ----------------------- | -------------------------------- |
49-
| **Static Analysis** | Clang-Static-Analyzer, PVS-Studio | Pre-commit hooks | Zero false positives |
50-
| **Dynamic Analysis** | AddressSanitizer, MemorySanitizer | CI/CD integration | 100% memory safety |
51-
| **Performance Profiling** | Perf, Intel VTune, Tracy | Continuous benchmarking | Performance regression detection |
52-
| **Documentation** | Doxygen, Sphinx | Automated generation | API coverage tracking |
44+
| Tool Category | Implementation | Integration |
45+
| ------------------------- | --------------------------------- | ----------------------- |
46+
| **Static Analysis** | Clang-Static-Analyzer, PVS-Studio | Pre-commit hooks |
47+
| **Dynamic Analysis** | AddressSanitizer, MemorySanitizer | CI/CD integration |
48+
| **Documentation** | Doxygen | Automated generation |
5349

5450
## 🚧 Prerequisites
5551

56-
- `cmake 3.25.0+`
52+
- `cmake 3.30.0+`
5753
- `C++ compiler with C++23 support`
5854
- `ninja`
5955
- `(optional) cmake/cfg/*.cmake tools`
@@ -132,7 +128,21 @@ python -m http.server 8080
132128

133129
## 🚧 Roadmap
134130

135-
- [ ] Add Android build support
131+
- [ ] develop
132+
133+
## 📖 Learning Resources
134+
135+
### Essential Reading
136+
- **[C++ Weekly](https://www.youtube.com/@cppweekly)** by Jason Turner — Weekly doses of modern C++
137+
- **[Performance-Aware Programming](https://www.computerenhance.com/)** by Casey Muratori — Hardware-conscious development
138+
- **[C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/)** by Stroustrup & Sutter — Industry best practices
139+
- **[Effective Modern C++](https://www.oreilly.com/library/view/effective-modern-c/9781491908419/)** by Scott Meyers — Essential patterns
140+
141+
### Technical References
142+
- **[cppreference.com](https://en.cppreference.com/)** — Comprehensive language reference
143+
- **[C++23 Features](https://en.cppreference.com/w/cpp/23)** — Latest standard capabilities
144+
- **[Compiler Explorer](https://godbolt.org/)** — Live assembly output analysis
145+
- **[Quick Bench](https://quick-bench.com/)** — Online micro-benchmarking
136146

137147
## 🤝 Contributing
138148

@@ -145,3 +155,9 @@ Contributions are welcome! Fork the repository and submit a pull request.
145155
## 🙏 Acknowledgments
146156

147157
Thanks to CMake, CTest, and the open-source community.
158+
159+
---
160+
161+
> *"C++ is a language for people who want both elegance and efficiency."***Bjarne Stroustrup**
162+
163+
Built with 💙 by developers who believe that **performance-aware programming** is not premature optimization — it's responsible engineering.

src/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ install(TARGETS cli_app RUNTIME DESTINATION bin COMPONENT runtime)
1313

1414
add_library(sdl_app SHARED sdl_main.cpp)
1515
target_link_libraries(sdl_app PRIVATE SDL3::SDL3-shared warnings)
16+
set_target_properties(sdl_app PROPERTIES CXX_STANDARD 23 CXX_STANDARD_REQUIRED
17+
YES CXX_EXTENSIONS NO)
1618

1719
install(
1820
TARGETS sdl_app

0 commit comments

Comments
 (0)