user635646
user635646

Reputation: 131

Define compilation variables based on target for

my c++ source file look for a specific variable passed from the makefile. when making a different target, this variable definition is different.

How can I define a variable in Makefile based on target.

Thanks

Upvotes: 11

Views: 13342

Answers (3)

Sebastian
Sebastian

Reputation: 189

What about that?

ifeq ($(MAKECMDGOALS),release)
    CFLAGS += -O3
else
    CFLAGS += -O0 -ggdb
endif

Upvotes: 0

Maxim Egorushkin
Maxim Egorushkin

Reputation: 136495

Do you mean something like this:

$ cat Makefile
BUILD := debug

cxxflags.debug := -g -march=native
cxxflags.release := -g -O3 -march=native -DNDEBUG
CXXFLAGS := ${cxxflags.${BUILD}}

all :
    @echo BUILD=${BUILD}
    @echo CXXFLAGS=${CXXFLAGS}

.PHONY : all

Output:

$ make
BUILD=debug
CXXFLAGS=-g -march=native

$ make BUILD=release
BUILD=release
CXXFLAGS=-g -O3 -march=native -DNDEBUG

Upvotes: 10

Maxim Egorushkin
Maxim Egorushkin

Reputation: 136495

You can use target-specific variable values, they propagate to target's prerequisites:

all : foo bar
foo : CXXFLAGS += -DFOO
bar : CXXFLAGS += -DBAR

foo bar :
    @echo target=$@ CXXFLAGS=${CXXFLAGS}

.PHONY : all

Upvotes: 17

Related Questions