Makefile cu parametru de compilator
- Details Hits: 5445
Iata o solutie draguta pentru folosirea mai multor compilatoare.
Problema: Am un program pe care vreau sa-l compilez cu mai multe compilatoare, iar fiecare compilator are optiuni diferite. Nu vreau sa am mai multe target-uri gen build_sun, build_gcc etc, ci vreau sa am o singur target.
Solutia: Folosesc o variabila, s-o numim COMPILER, iar variabilele din build target depind de ea. Totul depinde de cum interpreteaza Makefile-ul variabilele:
CC = ${CC_${COMPILER}}
Makefile se uita la variabila compiler, vede ca e sun, atunci CC ia valoarea lui ${CC_sun}
-- snip Makefile --
COMPILER = sun
CC_gcc = gcc
CC_gcc4= gcc
CC_sun = cc
LDFLAGS_gcc = -O3 -fopenmp
LDFLAGS_gcc4= -O3 -fopenmp
LDFLAGS_sun = -xO3 -xopenmp -L/opt/sun/sunstudio12.1/rtlibs/amd64
CC = ${CC_${COMPILER}}
LDFLAGS = ${LDFLAGS_${COMPILER}}
build:
${CC} ${LDFLAGS} -o hello hello.c
run: build
./hello
clean:
rm -Rf hello
-- snip Makefile --