43 lines
1.6 KiB
Markdown
43 lines
1.6 KiB
Markdown
# Clang Flake Template
|
|
|
|
This is a template for constructing a working environment for C/C++ development
|
|
with the [clang](https://clang.llvm.org/) (version 16.0.6) toolchain. [direnv](https://direnv.net/)
|
|
can be used to launch a dev shell upon entering this directory (refer to
|
|
`.envrc`). Otherwise run via:
|
|
```bash
|
|
$ nix develop
|
|
```
|
|
|
|
## Language Server
|
|
|
|
The [clangd](https://clangd.llvm.org/) LSP (version 14.0.6) is included in this
|
|
flake. The [codelldb](https://github.com/vadimcn/codelldb) VSCode plugin is also
|
|
included to interface with the LSP. Note this plugin, despite its name, is
|
|
compatible with other editors (e.g. neovim). To configure, refer to your
|
|
editor's documentation. To use the LSP across files, a
|
|
[compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)
|
|
must be generated. [CMake](https://cmake.org/) (version 3.27.7) is included in
|
|
this flake with `CMAKE_EXPORT_COMPILE_COMMANDS` already set from the
|
|
`CMakeLists.txt` file.
|
|
|
|
## Documentation
|
|
|
|
Documentation is generated using [Doxygen](https://www.doxygen.nl/index.html)
|
|
(version 1.9.7). (Re)generate documentation by editing the `Doxyfile` and
|
|
running:
|
|
```bash
|
|
$ doxygen
|
|
```
|
|
|
|
## Formatting
|
|
|
|
Formatting depends on the [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
|
|
(version 14.0.6) tool. Refer to `.clang-format` for default formatting options.
|
|
A `pre-commit` hook is included in `.githooks` that can be used to format all
|
|
`*.c` and `*.h` files prior to commit. Install via:
|
|
```bash
|
|
$ git config --local core.hooksPath .githooks/
|
|
```
|
|
If running [direnv](https://direnv.net/), this hook is installed automatically
|
|
when entering the directory.
|