Makefile
author František Kučera <franta-hg@frantovo.cz>
Wed, 30 Oct 2024 22:08:49 +0100
changeset 2 64777e5b619f
parent 1 4502b1c7346d
permissions -rw-r--r--
class Finally with lambda
     1 # cpp-finally
     2 # Copyright © 2024 František Kučera (Frantovo.cz, GlobalCode.info)
     3 #
     4 # This program is free software: you can redistribute it and/or modify
     5 # it under the terms of the GNU General Public License as published by
     6 # the Free Software Foundation, version 3 of the License.
     7 #
     8 # This program is distributed in the hope that it will be useful,
     9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
    10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    11 # GNU General Public License for more details.
    12 #
    13 # You should have received a copy of the GNU General Public License
    14 # along with this program. If not, see <http://www.gnu.org/licenses/>.
    15 
    16 CXX ?= g++
    17 CXXFLAGS ?= -O2 -g3 -ggdb -Wall -Wno-sign-compare
    18 CXXFLAGS += --std=c++20
    19 CXXFLAGS += -fsanitize=undefined -fsanitize=address
    20 LDFLAGS ?=
    21 
    22 SRC = $(shell find -maxdepth 1 -name '*.cpp')
    23 BIN = $(shell find -maxdepth 1 -name '*.cpp' | xargs basename -s .cpp)
    24 
    25 all: $(BIN)
    26 
    27 .PHONY: all run clean
    28 
    29 clean:
    30 	$(RM) $(BIN)
    31 
    32 run: $(BIN)
    33 	@echo "\e[1;32mHappy path without exceptions:\e[0m"
    34 	@for bin in $(BIN); do ./$$bin     ; true; done
    35 	@echo; echo
    36 	@echo "\e[1;32mInterrupted by exceptions:\e[0m"
    37 	@for bin in $(BIN); do ./$$bin fail; true; done
    38 
    39 $(BIN): $(SRC)
    40 	$(CXX) $(CXXFLAGS) -o $(@) $(@).cpp $(LDFLAGS)
    41 
    42 # Blok finally při odchytávání výjimek: C++ vs. Java
    43 # https://blog.frantovo.cz/c/395/