😺
CPP Moduleで自動でビルドとメモリリークのチェックをする
記事にするほどの内容でもないけど
動機
MacでC++の課題を進めていると、校舎のPCでコンパイルエラーになったりするので、コンパイルとメモリリークのチェックをするようにgithub actionsを設定しました。
僕は毎回このリポジトリをコピーして使っています。
github actionsの設定
動作タイミングをmainにpushした時にしているので、ビルドがエラーになったからと言って、push自体は成功してしまいます。エラーになったまま提出してしまわないように注意して下さい。
name: Build test
on:
push:
branches:
- main
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y make build-essential valgrind
- name: Build
run: make
ルートのMakefile
もはやNormは関係ないのでワイルドカードを使用しています。
UNAME := $(shell uname)
ifeq ($(UNAME), Linux) # Linux
LEAK_CHECK := valgrind --leak-check=full --error-exitcode=1
endif
ifeq ($(UNAME), Darwin) # Mac OS
LEAK_CHECK := leaks -atExit --
endif
.PHONY: all
all:
@for dir in $(wildcard ex*); do \
make re -C $$dir; \
$(LEAK_CHECK) ./$$dir/a.out; \
if [ $$? -ne 0 ]; then \
echo "Memory leak detected in $$dir"; \
exit 1; \
fi; \
done
Discussion