https://github.com/exercism/cpp
Exercism exercises in C++.
https://github.com/exercism/cpp
community-contributions-paused exercism-track
Last synced: about 2 months ago
JSON representation
Exercism exercises in C++.
- Host: GitHub
- URL: https://github.com/exercism/cpp
- Owner: exercism
- License: mit
- Created: 2014-03-17T02:12:04.000Z (about 11 years ago)
- Default Branch: main
- Last Pushed: 2024-05-16T19:22:18.000Z (about 1 year ago)
- Last Synced: 2024-05-22T16:24:28.648Z (12 months ago)
- Topics: community-contributions-paused, exercism-track
- Language: C++
- Homepage: https://exercism.org/tracks/cpp
- Size: 1.66 MB
- Stars: 247
- Watchers: 25
- Forks: 198
- Open Issues: 79
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Exercism C++ Track
Exercism Exercises in C++
## Contributing Guide
Please see the [contributing guides](https://github.com/exercism/docs/tree/main/building/github)
The most useful way to start contributing to this track is to review Pull Requests and/or some of the open track issues.
There are not many active contributors, so anyone reviewing PRs or Issues, even just to +1 someone elses opinion, is appreciated.## Adding an exercise
Here is a list of things that need to be done to add an exercise to this track.
1. Add the exercise under the `exercises/` directory.
2. Create your test suite based on the canonical tests in the [problem specifications](https://github.com/exercism/problem-specifications) repo, and add a comment at the top of the test suite noting the version of the test suite it implements.
3. Create an example solution and name the files `example.cpp` and `example.h`. `example.cpp` is optional but encouraged.
4. Add the test to the list in the root CMakeLists.txt file.
5. Add the test to the config.json file. The [configlet](https://github.com/exercism/configlet) can help generate a unique UUID. You can download configlet using the script in `bin/fetch-configlet`.
6. Add at least one topic for the exercise in the config.json file. Check the available topics in [TOPICS.txt](https://github.com/exercism/problem-specifications/blob/master/TOPICS.txt).
7. Use the [configlet](https://github.com/exercism/configlet) tool to generate the README for your exercise.
8. Try to match the formatting used in the other tests as closely as possible.## Testing an exercise
The Exercism build system has two unusual constraints. First, example solutions
must be named `example.h` and `example.cpp`; this prevents Exercism from sending
these files to the student. Second, student solutions must be named `.h`
and `.cpp`, for example `anagram.h` and `anagram.cpp`.The current CMake build system navigates this with an unusual approach: it copies
all example solutions from the `exercises/` tree to an alternate directory
(which is ignored by git), renames the solutions as if they were student exercises,
and runs a complete build in this new directory.Maintainers can largely ignore the alternate exercise directory if they recopy
their example solution before running a build. Re-running CMake will recopy
all exercise files.For example, a maintainer can copy, configure, compile, and test all exercises by
running the following from the root directory:
```bash
cmake . && make
```For an individual exercise, in this example `anagram`, the maintainer should edit:
```bash
exercises/anagram/example.h
exercises/anagram/example.cpp
exercises/anagram/anagram_test.cpp
```Then copy, configure, compile, and test with:
```bash
cmake . && make test_anagram
```