Makefile 基于的目标定义编译变量 我的C++源文件查找从Mag文件传递的特定变量。当制定不同的目标时,此变量定义是不同的

Makefile 基于的目标定义编译变量 我的C++源文件查找从Mag文件传递的特定变量。当制定不同的目标时,此变量定义是不同的,makefile,Makefile,如何基于目标在Makefile中定义变量 谢谢你的意思是这样的吗 $ 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} .PHO

如何基于目标在Makefile中定义变量


谢谢你的意思是这样的吗

$ 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
您可以使用,它们传播到目标的先决条件:

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

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

.PHONY : all
那怎么办

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

变量作为
-D
标志传递?你能提供你的Makefile中有几个目标的摘录吗?@martinkunev嗯,GNU make是唯一的便携式make,AFAIK
nmake
是Windows特有的,是垃圾,Sun和Sun在排水沟中绕圈子。。。我不熟悉其他品牌。正是我要找的,