Build with gfortran and make
| -Wall -Wextra -fcheck | |
| -J module dir | |
| Minimal Makefile | |
| fpm concept |
-Wall -Wextra -fcheck
Strict flags turn silent bugs into loud compile time errors. Wall and Wextra enable useful warnings while fcheck adds runtime checks for bounds and more. Keep them on for debug builds from day one.
gfortran -Wall -Wextra -fcheck=all -g app.f90 -o app
./app
n = 42
-J module dir
Modules compile to .mod files that other units import at build time. The -J flag chooses the directory for those files so build roots stay clean. The -I flag tells later compiles where to find them.
mkdir -p build_mods
gfortran -J build_mods -c utils.f90
gfortran -I build_mods main.f90 utils.o -o app
Minimal Makefile
A minimal Makefile rebuilds only stale files with one word: make. List object files as prerequisites of the app target and add a pattern rule for compiling. A clean target removes build artifacts. Recipe lines below start with a tab character, which make requires.
FC = gfortran
FFLAGS = -Wall -Wextra -fcheck=all
app: main.o utils.o
$(FC) $(FFLAGS) main.o utils.o -o app
%.o: %.f90
$(FC) $(FFLAGS) -c $< -o $@
clean:
rm -f app *.o *.mod
.PHONY: clean
make
gfortran -Wall -Wextra -fcheck=all -c main.f90 -o main.o gfortran -Wall -Wextra -fcheck=all -c utils.f90 -o utils.o gfortran -Wall -Wextra -fcheck=all main.o utils.o -o app
fpm concept
The Fortran package manager fpm wraps this workflow in standard commands. Fpm new starts a layout, fpm build compiles, and fpm test runs the suite. Learn the concept here and install the tool when a project outgrows plain makefiles.
fpm new demo
fpm build
fpm test
Next: Debugging
Article author: Arthur Isaev