Skip to content

Latest commit

 

History

History
62 lines (42 loc) · 1.34 KB

tools.md

File metadata and controls

62 lines (42 loc) · 1.34 KB

Tools

compiler

  • warnings are your friend
  • clang from source
  • cross platform different warnings
  • old versions in distros

clang-format

Automatic formatting of source code. A must have in my option. It doesn't matter what configuration you pick, the goal is for your complete code base to look as similar as possible.

# Formats all files with endings .h .hpp .cpp inplace (overrides).
find . -iname '*.h' -o -iname '*.hpp' -o -iname '*.cpp' | xargs clang-format -i

clang-tidy

Static analysis tool. Takes a lot of CPU to run, but finds a lot of valid issues.

compiler-explorer

https://godbolt.org

Online compiler. Great for testing small code snippets. Does not currently have JUCE installed unfortunately.

coverage

  • gcc + gcov & lcov
  • clang + llvm-profdata & llvm-cov

Makefile/Scripts

I usually wrap all the common commands in a Makefile. Just to save some typing.

CONFIG ?= Release
BUILD_DIR ?= build
GENERATOR ?= Ninja

.PHONY: config
config:
	cmake -S. -B$(BUILD_DIR) -G$(GENERATOR) -DCMAKE_BUILD_TYPE=$(CONFIG)

.PHONY: build
build:
	cmake --build $(BUILD_DIR) --config $(CONFIG)

.PHONY: test
test:
	cd $(BUILD_DIR) && ctest -C $(CONFIG)

.PHONY: clean
clean:
	rm -rf $(BUILD_DIR)

.PHONY: format
format:
	find . -iname '*.h' -o -iname '*.hpp' -o -iname '*.cpp' | xargs clang-format -i