88
99* A minimal but complete Make-based C++23 project template.*
1010
11- This project packages a simple C++23 command-line program, including essential
12- tools and workflows for building, testing, and maintaining the code. The
13- program prints the current date in the ` YY/MM/DD = Www ` format (e.g., `25/05/14
14- = Wed`).
11+ This project packages a simple C++23 command-line program with essential tools
12+ and workflows for building, testing, and maintaining the code. The program
13+ prints the current date in the ` YY/MM/DD = Www ` format (e.g. ` 25/05/14 = Wed ` ).
1514
1615Project website:
1716[ ** aafulei.github.io/cpp-today** ] ( https://aafulei.github.io/cpp-today ) .
1817
18+ - [ Features] ( #features )
19+ - [ Supported Platforms] ( #supported-platforms )
20+ - [ Getting Started] ( #getting-started )
21+ - [ Project Structure] ( #project-structure )
22+ - [ Project Website] ( #project-website )
23+ - [ Author] ( #author )
24+ - [ License] ( #license )
25+ - [ Version] ( #version )
26+ - [ Changelog] ( #changelog )
27+
1928## Features
2029
2130- Minimal, complete C++23 project template
22- - Simple and reliable Make-based build system
31+ - All-in-one Make-based build system
2332- Test scripts for manual and automated testing
2433- Code formatting support with Clang Format
2534- Editor tooling support via Clangd
2635- Built-in CI/CD workflows using GitHub Actions
27- - Project documentation website generated with MkDocs
36+ - Project documentation website built with MkDocs
37+ - Source code documentation generated with Doxygen
38+ - Software documentation in GNU-style man page
2839
2940## Supported Platforms
3041
@@ -35,14 +46,15 @@ Project website:
3546
3647### Download
3748
38- Download pre-built binaries from the
39- [ Release] ( https://github.com/aafulei/cpp-today/releases )
40- page (or build from source as shown below).
49+ Download pre-built binaries and the accompanying man page from the
50+ [ Release] ( https://github.com/aafulei/cpp-today/releases ) page.
51+
52+ Alternatively, you can build the program from source as shown below.
4153
4254### Build
4355
44- Clone the [ GitHub repository] ( https://github.com/aafulei/cpp-today ) . Use ` make `
45- to build the program:
56+ Clone the [ GitHub repository] ( https://github.com/aafulei/cpp-today ) . Then use
57+ ` make ` to build the program:
4658
4759``` shell
4860make
@@ -51,61 +63,107 @@ make
5163### Run
5264
5365- If you downloaded the binary from the
54- [ Release] ( https://github.com/aafulei/cpp-today/releases )
55- page, follow the instructions there.
66+ [ Release] ( https://github.com/aafulei/cpp-today/releases ) page, follow the
67+ instructions there.
5668
57- - If you built it yourself using ` make ` , run the executable located at:
69+ - If you built the program yourself using ` make ` , you can run it with:
70+
71+ ``` shell
72+ make run
73+ ```
74+
75+ Alternatively, to run manually:
76+
77+ ` ` ` shell
78+ ./bin/release/today
79+ ` ` `
80+
81+ You should see the current date printed out in the ` YY/MM/DD = Www` format, for
82+ example:
5883
59- ``` shell
60- ./bin/release/today
6184```
85+ 25/05/14 = Wed
86+ ```
87+
88+ ### Install
6289
63- Alternatively, you can build and run the program in one step :
90+ To install the program, run :
6491
6592```shell
66- make run
93+ make install
6794```
6895
69- ### Result
96+ The ` man ` page will be installed alongside the program. You might need ` sudo `
97+ privileges. Run ` make help ` for customization options. To install the
98+ binary and the man page manually, copy them to their default destinations or to
99+ directories of your choice:
70100
71- You should see the current date printed out in the ` YY/MM/DD = Www ` format, e.g.
101+ | Source | Default Destination |
102+ | --------------------- | ---------------------------- |
103+ | ` ./bin/release/today ` | ` /usr/local/bin/ ` |
104+ | ` ./docs/man/today.1 ` | ` /usr/local/share/man/man3/ ` |
72105
73- ```
74- 25/05/14 = Wed
106+ To uninstall the program and the man page, run:
107+
108+ ``` shell
109+ make uninstall
75110```
76111
77- ## Build System
112+ ### Ask for Help
78113
79- This project features a simple and reliable Make-based build system that allows
80- you to use ` make ` to build, run, and test the program.
114+ As is typical with command-line programs, run:
81115
82116``` shell
83- make # Build release version
84- make debug # Build debug version
85- make run # Build and run release version
86- make run-debug # Build and run debug version
87- make test # Build and test release version
88- make test-debug # Build and test debug version
89- make clean # Remove build files
117+ today --help
90118```
91119
92- To list all targets and options, run ` make help ` .
120+ for help. If the man page has been installed, you can run:
121+
122+ ``` shell
123+ man today
124+ ```
125+
126+ to view the manual page for more information.
127+
128+ * For detailed user guides, please visit the project website
129+ [ ** aafulei.github.io/cpp-today** ] ( https://aafulei.github.io/cpp-today ) .*
93130
94131## Project Structure
95132
96- - [ ` .github/workflows/ ` ] ( ./.github/workflows/ ) – GitHub Actions workflows
97- - [ ` docs/ ` ] ( ./docs/ ) – documentation files for MkDocs and Doxygen
98- - [ ` src/ ` ] ( ./src/ ) – source code
99- - [ ` tests/ ` ] ( ./tests/ ) – test scripts
100- - [ ` .clang-format ` ] ( ./.clang-format ) – Clang Format configuration
101- - [ ` .gitignore ` ] ( ./.gitignore ) – Git ignore patterns
102- - [ ` Doxyfile ` ] ( ./Doxyfile ) – Doxygen configuration file
103- - [ ` DoxygenLayout.xml ` ] ( ./DoxygenLayout.xml ) – Doxygen website layout
104- - [ ` LICENSE ` ] ( ./LICENSE ) – software license
105- - [ ` Makefile ` ] ( ./Makefile ) – Make build script
106- - [ ` README.md ` ] ( ./README.md ) – repository documentation (this file)
107- - [ ` compile_flags.txt ` ] ( ./compile_flags.txt ) – Clangd compile options
108- - [ ` mkdocs.yml ` ] ( ./mkdocs.yml ) – MkDocs project website configuration
133+ - [ ` .github/workflows/ ` ] ( ./.github/workflows/ ) — GitHub Actions workflows
134+ - [ ` docs/ ` ] ( ./docs/ ) — project documentation files and assets
135+ - [ ` css/ ` ] ( ./docs/css/ ) — custom CSS files for MkDocs and Doxygen
136+ - [ ` img/ ` ] ( ./docs/img/ ) — image files
137+ - [ ` man/ ` ] ( ./docs/man/ ) - man page files
138+ - [ ` mermaid/ ` ] ( ./docs/mermaid/ ) - source files for Mermaid diagrams
139+ - ` .md ` files - source files for MkDocs to generate the project website
140+ - [ ` src/ ` ] ( ./src/ ) — source code
141+ - [ ` tests/ ` ] ( ./tests/ ) — test scripts
142+ - [ ` .clang-format ` ] ( ./.clang-format ) — Clang Format configuration
143+ - [ ` .gitignore ` ] ( ./.gitignore ) — Git ignore patterns
144+ - [ ` CHANGELOG.md ` ] ( ./CHANGELOG.md ) — changelog
145+ - [ ` Doxyfile ` ] ( ./Doxyfile ) — Doxygen configuration file
146+ - [ ` DoxygenLayout.xml ` ] ( ./DoxygenLayout.xml ) — Doxygen website layout
147+ - [ ` LICENSE ` ] ( ./LICENSE ) — license file
148+ - [ ` Makefile ` ] ( ./Makefile ) — Make build script
149+ - [ ` README.md ` ] ( ./README.md ) — repository documentation (this file)
150+ - [ ` VERSION ` ] ( ./VERSION ) - version file
151+ - [ ` compile_flags.txt ` ] ( ./compile_flags.txt ) — Clangd compile options
152+ - [ ` mkdocs.yml ` ] ( ./mkdocs.yml ) — MkDocs project website configuration
153+
154+ ## Project Website
155+
156+ ![ ] ( ./docs/img/project.png )
157+
158+ As illustrated in the above diagram, information about this project is presented
159+ to users and developers in three distinct locations, each serving a specific
160+ purpose:
161+
162+ | Location | Provides |
163+ | ------------------------------------------------------------------------- | ------------------------------------- |
164+ | [ GitHub repository] ( https://github.com/aafulei/cpp-today ) | source code and project configuration |
165+ | [ MkDocs website] ( https://aafulei.github.io/cpp-today ) | detailed users guides |
166+ | [ Doxygen documentation] ( https://aafulei.github.io/cpp-today/doxygen/html ) | detailed code reference |
109167
110168## Author
111169
117175
118176## Version
119177
120- 0.2 .0
178+ 0.3 .0
121179
122180## Changelog
123181
0 commit comments