根据目标定义编译变量

use*_*646 9 makefile

我的c ++源文件查找从makefile传递的特定变量.在制作不同的目标时,此变量定义是不同的.

如何根据目标在Makefile中定义变量.

谢谢

Max*_*kin 16

您可以使用特定于目标的变量值,它们会传播到目标的先决条件:

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

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

.PHONY : all
Run Code Online (Sandbox Code Playgroud)


Max*_*kin 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
Run Code Online (Sandbox Code Playgroud)

输出:

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

$ make BUILD=release
BUILD=release
CXXFLAGS=-g -O3 -march=native -DNDEBUG
Run Code Online (Sandbox Code Playgroud)