SHELL:=/bin/bash BUILD_DIR:=bin PROJECT_NAME:=bettola EXECUTABLE:=$(BUILD_DIR)/$(PROJECT_NAME) CXX_COMPILER:=clang++ CMAKE_MAKEFILE:=$(BUILD_DIR)/Makefile .PHONY: all build config run clean help # Default. all: build # Build project, if not configured, then do that first. build: $(CMAKE_MAKEFILE) @echo "==== Building Bettola ====" @cmake --build $(BUILD_DIR) # run 'config' target if the build directory or CMake cache is missing. $(CMAKE_MAKEFILE): $(MAKE) config config: @echo "==== Configuring Bettola with CMake ====" @mkdir -p $(BUILD_DIR) @cmake -S . -B$(BUILD_DIR) -DCMAKE_CXX_COMPILER=$(CXX_COMPILER) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON # Build and run. run: all @echo "==== Running Bettola ====" $(EXECUTABLE) # Remove build dir. clean: @echo "==== Cleaning Bettola ====" @rm -rf $(BUILD_DIR) @echo "==== Project Cleaned ====" help: @echo "Available commands:" @echo " make - Build the project (default)." @echo " make build - Build the project." @echo " make run - Build and run the project." @echo " make config - Force CMake to re-configure the project." @echo " make clean - Remove all build files"