# =====CONFIG===== BUILD_DIR := ./build SRC_DIR := ./src INCLUDE_DIR := ./include TEST_DIR := test CORES != nproc # =====RECIPES===== all: build .PHONY: cmake cmake: $(BUILD_DIR)/Debug/Makefile $(BUILD_DIR)/Debug/Makefile: CMakeLists.txt @ cmake -B'$(BUILD_DIR)/Debug' -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=1 . @ ln -sf '$(BUILD_DIR)/Debug/compile_commands.json' compile_commands.json .PHONY: cmake-test cmake-test: $(BUILD_DIR)/Test/Makefile $(BUILD_DIR)/Test/Makefile: CMakeLists.txt @ cmake -B'$(BUILD_DIR)/Test' -DCMAKE_BUILD_TYPE=Test . .PHONY: build build: cmake @ make -C '$(BUILD_DIR)/Debug' .PHONY: build-test build-test: cmake-test @ make -C '$(BUILD_DIR)/Test' .PHONY: cmake-release cmake-release: $(BUILD_DIR)/Release/Makefile $(BUILD_DIR)/Release/Makefile: CMakeLists.txt @ cmake -B'$(BUILD_DIR)/Release' -DCMAKE_BUILD_TYPE=Release . .PHONY: prod prod: cmake-release @ make -C '$(BUILD_DIR)/Release' .PHONY: test test: build-test @ $(MAKE) -C '$(BUILD_DIR)/Test' test ARGS=-j$(CORES) CTEST_OUTPUT_ON_FAILURE=1 .PHONY: clean clean: @ rm -rf '$(BUILD_DIR)' compile_commands.json # .PHONY: lint # lint: # @ clang-format --Werror -n $(SRCS) # .PHONY: format # format: # @ clang-format -i $(SRCS)