Определите переменные компиляции на основе цели для - PullRequest
9 голосов
/ 26 февраля 2011

мой исходный файл на c ++ ищет определенную переменную, переданную из make-файла.при создании другой цели это определение переменной отличается.

Как определить переменную в Makefile на основе цели.

Спасибо

Ответы [ 2 ]

16 голосов
/ 01 марта 2011

Вы можете использовать значения переменных, специфичных для цели , они распространяются на предпосылки цели:

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

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

.PHONY : all
7 голосов
/ 01 марта 2011

Вы имеете в виду что-то вроде этого:

$ 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

Выход:

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

$ make BUILD=release
BUILD=release
CXXFLAGS=-g -O3 -march=native -DNDEBUG
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...