parent
1fb38e3e0d
commit
9e31555d6f
@ -1,3 +1,6 @@ |
||||
build/ |
||||
*.o |
||||
*~ |
||||
cpp/flake.nix |
||||
cpp/flake.lock |
||||
cpp/.direnv/* |
||||
|
||||
@ -0,0 +1 @@ |
||||
use flake |
||||
@ -0,0 +1,23 @@ |
||||
BUILD_DIR := build
|
||||
|
||||
.PHONY: all configure build clean run |
||||
|
||||
all: build |
||||
|
||||
configure: |
||||
cmake -S . -B $(BUILD_DIR) -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DCMAKE_C_COMPILER=clang \
|
||||
-DCMAKE_CXX_COMPILER=clang++
|
||||
-DBUILD_CLI_VIS=1
|
||||
|
||||
build: configure |
||||
cmake --build $(BUILD_DIR)
|
||||
@# Symlink compile_commands.json to root so clangd picks it up
|
||||
@ln -sf $(BUILD_DIR)/compile_commands.json compile_commands.json
|
||||
|
||||
run: build |
||||
./$(BUILD_DIR)/myapp
|
||||
|
||||
clean: |
||||
rm -rf $(BUILD_DIR) compile_commands.json
|
||||
@ -0,0 +1,28 @@ |
||||
{ |
||||
description = "C++ dev shell with CMake and clangd"; |
||||
|
||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
||||
|
||||
outputs = { self, nixpkgs }: |
||||
let |
||||
systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; |
||||
forAll = f: nixpkgs.lib.genAttrs systems (s: f nixpkgs.legacyPackages.${s}); |
||||
in { |
||||
devShells = forAll (pkgs: { |
||||
default = pkgs.mkShell { |
||||
packages = with pkgs; [ |
||||
cmake |
||||
clang-tools # provides clangd, clang-format, clang-tidy |
||||
llvmPackages.clang |
||||
ninja # optional but pairs well with cmake |
||||
catch2 # testing framework |
||||
]; |
||||
|
||||
shellHook = '' |
||||
export CC=clang |
||||
export CXX=clang++ |
||||
''; |
||||
}; |
||||
}); |
||||
}; |
||||
} |
||||
Loading…
Reference in new issue