我的c ++源文件查找从makefile传递的特定变量。在制作不同的目标时,这个变量定义是不同的。
如何根据目标在Makefile中定义变量。
由于
答案 0 :(得分:16)
您可以使用target-specific variable values,它们会传播到目标的先决条件:
all : foo bar
foo : CXXFLAGS += -DFOO
bar : CXXFLAGS += -DBAR
foo bar :
@echo target=$@ CXXFLAGS=${CXXFLAGS}
.PHONY : all
答案 1 :(得分:7)
你的意思是这样的:
$ 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
答案 2 :(得分:0)
那怎么办?
ifeq ($(MAKECMDGOALS),release)
CFLAGS += -O3
else
CFLAGS += -O0 -ggdb
endif